Django и staticfiles вопросы - PullRequest
0 голосов
/ 15 ноября 2011

Чем больше я изучаю Django, тем больше открываю для себя новые вещи.

Я читаю официальные документы, stackoverflow и google, но у меня все еще есть сомнения.

Какой правильный / нормальный способорганизовать наши статические файлы?

Я имею в виду папки и settings.py

У меня есть что-то вроде:

CURRENT_PATH = os.path.dirname(__file__)

STATIC_ROOT = os.path.join(CURRENT_PATH, 'static')

STATIC_URL = '/static/'

Хорошо, я собираюсь собрать все мои статические приложения на ~/ static /

Я создал папку static / appname в каждом приложении и поместил туда все статические приложения.

Кроме того, мне нужна статическая папка для статики всего проекта (что является общимназвание для этого? Так как я использовал / static / для собранных вещей, и они не могут быть равны).

Пока все хорошо, у меня есть css вроде:

href="{{ STATIC_URL }}appname/styles.css"

, и он работает как шарм.

Но я думаю, что при развертывании моего приложения мне нужно запустить «collectstatic», поэтому я помещаю эту папку / static / в «Cherokee».

Вопрос в том ...это будет работать?Я попытался прокомментировать AppDirectoryFinder и _DIRS, и это не работает на локальных (имея в виду статические вещи, я имею в виду css на / static / и в других папках тоже).

Просто лучшеиметь одну статическую папку в корне для всего проекта?И скопируйте admin css в эту папку (AKA вручную collectstatic).

Проекты, которые я вижу в github / bitbucket, готовы к развертыванию, мне нужно знать шаги для перехода от dev к развертыванию.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

Я разобью это, когда использую статическое приложение django

URL, по которому будет обслуживаться ваш статический носитель STATIC_URL = '/ static /', это используется для двух вещей {{STATIC_URL}} вваши шаблоны и статический файл url и для размещения ваших статических файлов в django ( ТОЛЬКО ДЛЯ РАЗРАБОТКИ )

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()

Местоположение, в котором ваши файлы находятся на сервере

STATIC_ROOT = '/var/www/website/static'

это используется, когда вы запускаете collectstatic и где ваш веб-сервер должен искать

определение вашего файлового поиска

STATICFILES_FINDERS = ( 
                       'django.contrib.staticfiles.finders.FileSystemFinder',
                       'django.contrib.staticfiles.finders.AppDirectoriesFinder',
                       )

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

'django.contrib.staticfiles.finders.AppDirectoriesFinder'

найдет любую папку с именем "static"который находится внутри установленного приложения

'django.contrib.staticfiles.finders.FileSystemFinder'

скажет django посмотреть STATICFILES_DIRS (это статические файлы вашего проекта в целом)

, который должен быть определен как кортеж

STATICFILES_DIRS = ( 
                    join( CURRENT_PATH, 'static' ),
                    )

, где «статический» - это все, что вы хотите, и вы можете добавить столько папок для мониторинга, сколько пожелаете.

подкаталогивы размещаете внутри каждого приложения, т. е. app / static / appname не нужны, но обеспечат, чтобы файлы с одинаковыми именами в разных приложениях не перезаписывали файлы из других приложений или ваших корневых статических папок

все это быловзято из собственного опыта и https://docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/

0 голосов
/ 15 ноября 2011

Кроме того, мне нужна статическая папка для статики всего проекта (как ее обычно называют? Поскольку я использовал / static / для собранных вещей, и они не могут быть равными).

Уверены ли вы?Я почти уверен, что использую одну и ту же папку для сбора статических файлов и хранения статических файлов по всему проекту.Не уверен, что это не рекомендуется, но это работает для меня.

Обратите внимание, что это только на стороне развертывания;моя кодовая база содержит статические файлы проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...