Ответ 1
Приложение статических файлов автоматически не служит для статического носителя в режиме DEBUG=False
. От django.contrib.staticfiles.urls
:
# Only append if urlpatterns are empty
if settings.DEBUG and not urlpatterns:
urlpatterns += staticfiles_urlpatterns()
Вы можете использовать его, добавив к вашему urlpatterns
вручную или использовать сервер для обслуживания статических файлов (например, он должен использоваться при запуске проектов Django в режиме без DEBUG).
Хотя мне интересно, почему вы получаете ответ кода состояния 500 вместо 404. Какое исключение в этом случае?
ИЗМЕНИТЬ
Итак, если вы все еще хотите обслуживать статические файлы через приложение staticfiles, добавьте следующее в свой корневой URL-адрес conf (urls.py
):
if settings.DEBUG is False: #if DEBUG is True it will be served automatically
urlpatterns += patterns('',
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
)
Некоторые вещи, которые вы должны иметь в виду:
- не используйте это в производственной среде (медленнее, поскольку рендеринг статических файлов проходит через Django, а не обслуживается вашим веб-сервером напрямую).
- Скорее всего, вам нужно использовать команды управления для сбора статических файлов в
STATIC_ROOT
(manage.py collectstatic
). Дополнительную информацию см. В файлах приложений staticfiles. Это просто необходимо, так как вы запускаете режим без отладки. - не забывайте
from django.conf import settings
вurls.py
:)