2016-01-06 5 views
1

Я ищу советы о том, как структурировать проект Django. Это моя нынешняя структура на данный момент:Как я должен создавать свои статические файлы приложений в Django?

project_name 
    - deploy 
    - app_name 
    -- migrations 
    -- templates 
    -- templatetags 
    -- __init__.py 
    -- admin.py 
    -- context_processors.py 
    -- defaults.py 
    -- models.py 
    -- tests.py 
    -- views.py 
    - static 
    -- admin 
    -- app_name 
     --- css 
     --- fonts 
     --- img 
     --- js 
     --- tinymce 
    - templates 
    - project_name 
    - __init__.py 
    - fabfile.py 
    - manage.py 

Интересно, что лучше иметь все статические файлы в моей папке приложения, или они должны быть, как это в настоящий момент в статической папке и app_name?

Или это еще один лучший способ структурирования моих статических файлов?

+0

вы должны добавить папку 'static' в каталог вашего приложения. см. официальный документ https://docs.djangoproject.com/en/1.4/howto/static-files/ –

ответ

2

Поместите их в каталог под названием «static» под каталогом вашего приложения. Вот где django.contrib.staticfiles.finders.AppDirectoriesFinder ищет их by default.

В каталоге static/ создайте каталог с именем вашего приложения.

Итак, при запуске ./manage.py collectstatic Django скопирует все файлы в каталог, определенный в settings.STATIC_ROOT, и каждое приложение будет иметь свои файлы внутри своего собственного подкаталога.

project_name 
- deploy 
- app_name 
    - migrations 
    ... 
    - static 
    - app_name 
     - css 
     - fonts 
     - img 
     - js 
     - tinymce 
    - templates 
    - app_name 
     - item.html 
     - list.html 
- project_name 
- __init__.py 
- manage.py 

Кроме того, в зависимости от количества шрифтов, CSS и JS файлов у вас есть, я просто поместить их в app_name/static/app_name/, а не создавать еще один уровень каталогов js/ и css/. «Плоские лучше, чем вложенные», как говорится.

+0

Спасибо, чувак. Я пробовал это сначала, не создавая имя приложения в статической папке без результатов. Благодаря! –

2

Если вся ваша речь идет о статических файлах, по эмпирическому правилу:

  • поместить их в приложении, если они являются специфическими для приложения
  • поставить их в зависимости (например, другое приложение, которое вы должен быть установлен в вашем проекте django, хотя эта концепция не применяется Django, она применяется системой управления пакетами Python (скажем, setuptools), если вы планируете выпустить свое приложение django), если ваши активы являются глобальными для многих приложений django у тебя есть. Вы также должны отпустить (если это так) и установить зависимость в проекте django (иначе файлы не будут доступны).
  • помещают их в глобальный статический каталог для вашего проекта, если они предназначены только для проекта.

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

Смежные вопросы