2012-04-16 12 views
7

Это новая структура проекта (из примечаний к выпуску Django 1.4).Структура статических папок в Django 1.4?

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

То, что я не уверен, о том, должен ли я указать STATIC_ROOT на

myproject/myproject/static/ (вместе с settings.py, urls.py ...)

ИЛИ

Каталог верхнего уровня myproject/static (рядом с myproject, myapp1, myapp2)?

+3

Я не знаю, что такое «официальное» слово, но я думаю, что каталог верхнего уровня имеет больше смысла. – agf

ответ

7

STATIC_ROOT не связан с импортом Python, поэтому он полностью зависит от вас. Обычно myproject/static/, таким образом os.path.join(PROJECT_ROOT, 'static/') в настройках, проще.

обновление как предложено San4ez и примечания внутри 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/" 

Лучше поставить статические файлы в poll приложения в poll/static/, в соответствии с вашей структурой.

2

Я согласен с @okm, что myproject/static/ - хорошее место для статического, но также вы можете хранить изображения, css и js внутри своего приложения в myproject/polls/media. Чем вы должны настроить django.contrib.staticfiles приложение и скопировать статические из media в STATIC_ROOT с командой

python manage.py collectstatic 

Преимущество такого подхода, что позволяет распространять приложение со статическими и ваше приложение может свободно использоваться в других проектах

+0

css, js и images должны быть подпапками в myproject/myproject/static, а также myproject/poll/static. Использование папки с именем 'media' опасно, поскольку оно конфликтует с именем папки, обычно используемым в django для изображений и других файлов, загружаемых пользователями. Это также папка, используемая статическими файлами администратора (после collectstatic). Сбор статических файлов действительно будет собирать их для производственного сервера, чтобы затем обслуживать их из центральной папки (обычно вне вашей структуры папок myproject, например /var/www/www.mysite.com/static). – hobs

1

STATIC_ROOT - это просто путь к файлу, где приложение staticfiles contrib будет собирать и хранить все статические файлы. Это место для сбора предметов, вот и все. Главное, что это место временное хранилище и используется в основном при упаковке приложения для развертывания.

В staticfiles приложение ищет элементы, чтобы собрать из любого каталога под названием static в любых приложениях, которые перечислены в INSTALLED_APPS и в дополнении каких-либо дополнительные местах путей файлов, перечисленных в STATICFILES_DIRS.

Для моих проектов я создаю каталог deploy, в котором я создаю папку www, которую я использую для статических файлов, и различные другие файлы, используемые только при развертывании. Этот каталог находится на верхнем уровне проекта.

Вы можете указать переменную в любое место, на которое у пользователя есть права на запись, он не обязательно должен находиться в каталоге проекта.