Статические файлы Django перестают работать, если включить отладку - PullRequest
3 голосов
/ 02 ноября 2011
urlpatterns = patterns('',
    # Examples:
    url(r'^$', 'core.views.homepage', name='homepage'),
    url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
)

Это мой urls.py

Статический файл работает, если я отключаю отладку, и не работает, если я снова его включаю.

Часть моих настроек

STATIC_ROOT = os.path.join(PROJECT_ROOT, '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.
)

# 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',
)

Действительно странно для меня, кто-нибудь может помочь?

1 Ответ

21 голосов
/ 03 ноября 2011

Нет, STATIC_ROOT - это , а не , которые когда-либо обслуживал Джанго.Ожидается, что в производственном режиме (отладка) ваш веб-сервер будет обслуживать этот каталог напрямую.В процессе разработки (отладки) у вас не должно быть этого каталога или чего-либо еще, в любом случае.

Позвольте мне повторить это еще раз для акцента.Вы никогда не должны напрямую сохранять какие-либо активы в STATIC_ROOT.Этот каталог предназначен исключительно для вывода из команды управления collectstatic.Все ресурсы в вашем проекте должны быть сохранены в каталоге static конкретного приложения, к которому оно принадлежит.

Теперь, конечно, вы часто будете иметь активы, которые не связаны напрямую с одним приложением., а точнее весь ваш проект в целом.Для этого сценария вы создаете отдельный каталог в своем проекте и размещаете там все общие активы.Затем вы добавляете этот каталог в настройку STATICFILES_DIRS.

В процессе разработки Django будет обслуживать что-либо в этом каталоге, а в производственном процессе команда управления collectstatic будет извлекать активы из этого каталога.каталог в STATIC_ROOT.

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