2012-04-16 35 views
7

Đây là cấu trúc dự án mới (từ ghi chú phát hành 1.4 của Django).Cấu trúc thư mục tĩnh trong Django 1.4?

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

gì tôi không chắc chắn là liệu tôi nên chỉ STATIC_ROOT để

myproject/myproject/static/ (cùng với settings.py, urls.py ...)

HOẶC

Thư mục cấp cao nhất myproject/static (bên cạnh myproject, myapp1, myapp2)?

+3

Tôi không biết từ "chính thức" là gì, nhưng tôi nghĩ rằng thư mục cấp cao nhất có ý nghĩa hơn. – agf

Trả lời

7

STATIC_ROOT không liên quan đến nhập khẩu Python, do đó, nó hoàn toàn phụ thuộc vào bạn. Thông thường, myproject/static/, do đó, os.path.join(PROJECT_ROOT, 'static/') trong cài đặt, dễ dàng hơn.

cập nhật như San4ez đề nghị, và ghi chú bên settings.py

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files 
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/home/media/media.lawrence.com/static/" 

Tốt hơn để đưa các tập tin tĩnh của ứng dụng poll vào poll/static/, theo cấu trúc của bạn.

2

Tôi đồng ý với @okm rằng myproject/static/ là một nơi tốt để tĩnh, nhưng bạn cũng có thể lưu trữ hình ảnh, css và js bên trong ứng dụng của mình trong myproject/polls/media. Hơn bạn phải cấu hình django.contrib.staticfiles ứng dụng và sao chép tĩnh từ media để STATIC_ROOT với lệnh

python manage.py collectstatic 

Ưu điểm của phương pháp này mà điều này cho phép bạn để phát tán ứng dụng của bạn với tĩnh và ứng dụng của bạn có thể được sử dụng một cách tự do trong các dự án khác

+0

css, js và hình ảnh tất cả phải là thư mục con trong myproject/myproject/static, cũng như myproject/poll/static. Sử dụng thư mục có tên 'media' là nguy hiểm vì nó xung đột với tên thư mục thường được sử dụng trong django cho hình ảnh và các tệp khác do người dùng tải lên. Nó cũng là một thư mục được sử dụng bởi các tập tin tĩnh quản trị (sau khi thu thập). Thu thập tĩnh sẽ thực sự thu thập chúng cho một máy chủ sản xuất để sau đó phục vụ chúng từ một thư mục trung tâm (thường nằm ngoài cấu trúc thư mục myproject của bạn, như /var/www/www.mysite.com/static). – hobs

1

STATIC_ROOT chỉ là đường dẫn tệp nơi ứng dụng đóng góp staticfiles sẽ thu thập và gửi tất cả các tệp tĩnh. Đó là một địa điểm để thu thập các vật phẩm, đó là tất cả. Điều quan trọng là vị trí này là lưu trữ tạm thời và được sử dụng chủ yếu khi đóng gói ứng dụng của bạn để triển khai.

Các staticfiles ứng dụng tìm kiếm cho các hạng mục để thu thập từ bất kỳ thư mục gọi là static trong bất kỳ ứng dụng được liệt kê trong INSTALLED_APPS và ngoài ra bất kỳ địa điểm đường dẫn tập tin được liệt kê trong phụ STATICFILES_DIRS. Đối với các dự án của tôi, tôi tạo một thư mục deploy trong đó tôi tạo một thư mục www mà tôi sử dụng cho các tệp tĩnh và nhiều tệp khác chỉ được sử dụng khi triển khai. Thư mục này nằm ở cấp cao nhất của dự án.

Bạn có thể trỏ biến đến bất kỳ vị trí nào mà người dùng của bạn có quyền ghi, nó không cần phải nằm trong thư mục dự án.

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