Я создаю проект Django. Я просто попытался вывести проект из отладки, DEBUG = False
и по какой-то причине все мои статические файлы не отображаются. Они дают код ошибки 500. Как я могу это исправить?
некоторые параметры settings.py:
DEBUG = True
TEMPLATE_DEBUG = DEBUG
...
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
Ответ 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
:)
Ответ 2
В Django 1.3, если вы просто тестируете с помощью сервера управления manage.py, вы можете добавить опцию "--insecure", как описано в staticfiles документы:
Кажется, что по-прежнему отправляют электронные письма администратору, говоря, что нет шаблона, но он служит для статических файлов.
Я не уверен, что проблема с электронной почтой специально или ошибка