2011-01-21 27 views
10

Điều này có vẻ giống như một câu hỏi chủ quan, nhưng tôi chắc chắn có những kỹ thuật tốt mà một số bạn sử dụng để đảm bảo việc nhập khẩu trong các dự án Django vẫn được duy trì. Tôi đã từng có danh sách khoảng 30 lần nhập khác nhau trong mỗi tệp và rõ ràng vi phạm nguyên tắc DRY. Vì vậy, nó không chỉ là về thẩm mỹ, nó cũng về không trùng lặp mã.Làm thế nào để giữ cho nhập khẩu gọn gàng trong Django?

Tôi đang tìm một phương pháp giữ phần nhập trong các tệp Django có thể quản lý được. Những gì dường như với tôi như một ý tưởng tốt là có một tệp nhập chung cho mọi loại tệp (dạng xem, mô hình, v.v.), sau đó được nhập ở trên cùng, sau đó nhập thêm các ứng dụng cụ thể sau đó. Nhưng điều đó có gây ra rất nhiều chi phí không cần thiết? Các tệp đó nên trông như thế nào và các lớp quan trọng cho mọi loại tệp là gì?

Cập nhật

Theo yêu cầu, đây là một ví dụ từ một trong views.py tác phẩm của tôi.

from django.shortcuts import render_to_response, get_object_or_404 
from shortcuts import render_to_context, render_template 
from django.http import HttpResponseRedirect 
from django.contrib.comments.models import Comment 
from django.template import RequestContext 
from django.contrib.auth.decorators import login_required 
from django.views.decorators.http import require_POST 

from django.core.urlresolvers import reverse 

from models import Listing, LocationData 

from django.template import RequestContext 

import sys 
import urllib 
if sys.version_info <= (2, 5): 
    import simplejson as json 
else: 
    import json 

import forms 
import sanitize 

from models import RentListing, VacationListing, SaleListing 

from django.forms.models import model_to_dict 
from django.forms.formsets import formset_factory 

from django.core.urlresolvers import reverse 

mà, bạn có thể thấy, chỉ thực sự lộn xộn, vì tôi chỉ thêm vào cuối danh sách mỗi lần tôi cần thứ gì đó trong tệp. Giữ nó theo thứ tự chữ cái rõ ràng sẽ giúp đỡ, nhưng phải có một cách tốt hơn để khái quát hơn những gì tôi đang làm bây giờ.

Có đáng để phá vỡ nguyên tắc kiểu không sử dụng nhập khẩu * vì mục nhập ngắn hơn, dễ bảo trì hơn trong tệp thực tế không?

+0

Tôi cho rằng có thể giữ danh sách nhập ngắn bằng cách chỉ nhập 'django', nhưng điều đó sẽ chỉ dẫn đến một số lượng nhập lố bịch và nhớ lại từ bộ nhớ trong phần còn lại của tệp –

+0

Câu hỏi hay. Bạn có thể vui lòng dán một ví dụ mã cụ thể không? –

Trả lời

1

Tomasz đã đề cập đến một phần thú vị của tài liệu hướng dẫn của Google liên quan đến nhập khẩu, nhưng tôi cũng nghĩ rằng this section đáng đọc!

4

Bạn có quyền dễ dàng bỏ qua DRY khi nhập Django, hoặc với nhập khẩu python nói chung.

Đôi khi có lợi khi tách riêng các mục nhập thông dụng theo miền, sau đó tạo mô-đun để quản lý các mục nhập đó. Bước tiếp theo là một trong số ít các trường hợp ngoại lệ tôi làm cho quy tắc cá nhân của tôi về "Đừng sử dụng import *"


stuff_i_always_use.py

import django.templates as templates 
import tagalog.tagalog_appengine as tagalog 
#etc 

Sau đó, trong một số tập tin:

from stuff_i_aways_use import * 
+0

Vâng, đó là những gì tôi nghĩ rằng nó sẽ đi xuống quá. Câu hỏi vẫn là những gì để giữ trong tập tin và những gì để đưa ra vì lợi ích của không gây ra chi phí không cần thiết. –

+1

Đây là giải pháp mà tôi đã sử dụng. Thay vì nhập một tỷ bajillion ở đầu mỗi tệp, tôi đã đổ tất cả chúng vào một tệp import.py duy nhất và có một "từ nhập khẩu *" duy nhất ở đầu mỗi tệp. Các hướng dẫn theo phong cách google rất hữu ích để giữ mọi thứ gọn gàng, nhưng hoàn toàn vô dụng về DRY. –

Các vấn đề liên quan