Вложение статических файлов Django - PullRequest
0 голосов
/ 06 марта 2012

Контекст

Я пытаюсь настроить систему разработки непрерывной интеграции django на сервере apache2 через wsgi и Mercurial.

Настройка, кажется, работает нормально, но с хуком changegroup я запускаю python manage.py collectstatic --settings="sitename.settings" --noinput, чтобы обновить каталог статических файлов, расположенный в /path/to/sitename/static/.

Проблема

Но при каждом запуске команды python manage.py collectstatic --settings="sitename.settings" --noinput мой каталог /path/to/sitename/static/ получает полную копию файловой системы в /path/to/sitename/, что обеспечивает легкий доступ ко всем файлам кода, файлам настроек и т. Д. С помощью 5 запустить, у меня есть 5 вложенных /static/ в статическом каталоге, например. static/, static/static/, static/static/static/ и так далее ...

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

Используемая конфигурация

На данный момент DEBUG = True /path/to/sitename/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/"
STATIC_ROOT = '/path/to/sitename/static/'

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# URL prefix for admin static files -- CSS, JavaScript and images.
# Make sure to use a trailing slash.
# Examples: "http://foo.com/static/admin/", "/static/admin/".
ADMIN_MEDIA_PREFIX = '/static/admin/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    '/path/to/sitename/blog/static',
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

Вопрос

Что мне не хватает? Есть ли что-то в использовании staticfile, я не понял?
Будут ли у меня другие проблемы с таким решением?

1 Ответ

0 голосов
/ 06 марта 2012

STATIC_ROOT - это место, где collectstatic будет выгружать файлы, а STATICFILES_DIRS - место поиска статических файлов. Обратите внимание, что это необязательно . По умолчанию django будет искать каталог static во всех зарегистрированных приложениях.

Что касается дублирования, согласно документам:

Повторяющиеся имена файлов по умолчанию разрешаются аналогично тому, как работает разрешение шаблона: файл, который впервые найден в одном из указанные места будут использоваться. Если вы запутались, то найдите Команда может помочь показать, какие файлы найдены.

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

Самый простой способ использовать статические файлы - создать каталог с именем static в качестве подкаталога каталога вашего приложения и оставить STATICFILES_DIRS пустым.

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