2012-02-09 38 views
23

Sử dụng django 1.4 và đã thấy rằng khi bạn sử dụng startproject nó bây giờ tạo ra một thư mục trong dự án của bạn có cùng tên.Django 1,4 dự án mới cấu trúc thư mục lực lượng tiền tố dự án?

-myproject/ 
      manage.py 
      myproject/ 
        settings.py 
        urls.py 

Documented change here

Trước đây cho url của tôi, tôi có thể đầu vào

ROOT_URLCONF = 'urls' 

Nhưng điều đó không còn hoạt động. Bây giờ tôi có cần tiền tố này với tên dự án không? ví dụ:

ROOT_URLCONF = 'myproject.urls' 

- Trong urls.py của tôi, tôi muốn nhập khẩu các thiết lập nhưng bây giờ tôi có tiền tố nó với from myproject import settings.

Tôi nghĩ rằng các biến tiền tố có tên dự án là chống lại các tiêu chuẩn django vì nó phá vỡ khả năng tái sử dụng?

Trả lời

16

Vâng, tiền tố ROOT_URLCONF với tên dự án của bạn:

ROOT_URLCONF = 'myproject.urls' 

Bạn không nên nhập khẩu các thiết lập trực tiếp nào (xem Using settings in Python code). Thay vào đó, hãy sử dụng phần sau, hoạt động cho cả bố cục cũ và mới của dự án.

from django.conf import settings 
54

tôi sẽ chỉ cần thêm rằng nó buộc bạn phải sử dụng tiền tố khi bạn accces chính myproject.urls của bạn, nhưng nó không buộc bạn một trong hai cách cho các ứng dụng của bạn. Bạn có thể chọn để lưu trữ các ứng dụng hoặc trong thư mục cấp cao nhất:

myproject 
|-- manage.py 
|-- myproject 
| |-- __init__.py 
| |-- settings.py 
| |-- urls.py 
| `-- wsgi.py 
`-- polls 
    |-- __init__.py 
    |-- models.py 
    |-- tests.py 
    `-- views.py 

này là mặc định khi bạn sử dụng python manage.py startapp polls Trong trường hợp này, bạn muốn sử dụng from polls.models import Whatever

Ngoài ra, bạn có thể:

mkdir myproject/polls 
python manage.py startapp polls myproject/polls 

Và bạn sẽ có được điều này:

myproject 
|-- manage.py 
`-- myproject 
    |-- __init__.py 
    |-- polls 
    | |-- __init__.py 
    | |-- models.py 
    | |-- tests.py 
    | `-- views.py 
    |-- settings.py 
    |-- urls.py 
    `-- wsgi.py 

Trong trường hợp đó, bạn sẽ phải from myproject.polls.models import Whatever ...

Vì vậy, trước đây tốt hơn cho các ứng dụng bạn nghĩ bạn có thể sử dụng lại trong các dự án khác và ứng dụng này tốt hơn cho các ứng dụng được kết hợp chặt chẽ với các phần khác của dự án của bạn.

+0

Công cụ xây dựng tuyệt vời. Cám ơn vì cái này. – Kiwi

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