Django выбрасывает 500, когда значение отладки False в Production
Я не могу понять, почему Django 3 не работает, когда я запускаю с DEBUG=False
. Также, похоже, есть проблема с урлами:
www.domain.com/ -> Does not work
www.domain.com/en/ -> No problem
В журналах упоминается миллион проблем, но я не понимаю, в чем заключается основная проблема, поэтому я ищу помощи:
Я вижу, что внизу написано Internal Server Error: /favicon.ico
, и я подозреваю, что это и есть виновник, но проблема сохраняется, даже если я пробую обходные пути, такие как:
url(r'^favicon.ico$', RedirectView.as_view(url=staticfiles_storage.url('img/favicon.ico'), permanent=True)),
Я все еще получаю 500, заканчивающиеся на:
Internal Server Error: /
"GET / HTTP/1.1" 500 680
"GET /favicon.ico HTTP/1.1" 301 0
"GET /static/img/favicon.be884a05bb00.ico HTTP/1.1" 200 9896
Посмотрев на самую первую строку, кажется, что это проблема с 404.html
{% extends "base.html" %}
{% block body_class %}template-404{% endblock %}
{% block content %}
<h1>Page not found</h1>
<h2>Sorry, this page could not be found.</h2>
{% endblock %}
Если я убираю строку для расширения base.html, все работает, но я не понимаю почему.
Мой urls.py:
urlpatterns = [
url(r'^django-admin/', admin.site.urls),
url(r'^admin/', include(wagtailadmin_urls)),
url(r'^documents/', include(wagtaildocs_urls)),
url(r'^i18n/$', set_language, name='set_language'),
url(r'^sitemap\.xml$', sitemap, sitemaps),
url(r'^favicon.ico$', RedirectView.as_view(url=staticfiles_storage.url('img/favicon.ico'), permanent=True)),
]
urlpatterns += i18n_patterns(
# These URLs will have /<language_code>/ appended to the beginning
url(r'', include(content_urls)),
url(r'^search/$', search_views.search, name='search'),
url(r'', include(wagtail_urls)),
)
if settings.DEBUG:
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# Serve static and media files from development server
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
So besides understanding why extending base is an issue,
I am also wondering why at all we are getting 404 to begin with.
Спасибо за любую помощь
В первой строке говорится:
Exception while resolving variable 'self' in template '404.html'.
Вы использовали self
в своем base.html
, поэтому когда вы убираете
{% extends "base.html" %}
Все работает.
Так что Django не может разрешить переменную self
,
Пожалуйста, обновите свой Вопрос с помощью views.py
, который передает эту контекстную переменную self
в base.html
Это точно прояснит ситуацию
Также следует избегать использования зарезервированных ключевых слов, таких как self
в качестве имени переменной в Python