Я использую Django 2.1.3 в Python 3.6.7.
Предположим, что у меня есть этот путь URL:
path('admin/', admin.site.urls)
Если я перейду к /ad
, пока DEBUG = True
, я вижу обычную страницу ошибки Django 404:
Но если я сделаю DEBUG = False
, то сервер покажет мне 500.htm вместо 404.html для неверного URL /ad
(что не соответствует ни одному из Шаблоны URL).
Появляется 404.html для действительного URL, который вызывает ошибку 404. (например, когда запрос несуществующего объекта происходит с функцией get_object_or_404
)
вот моя /templates
структура каталогов:
/templates
400.html
403.html
404.html
500.html
index.html
...
Итак, как я должен сказать Django, чтобы он отображал ошибку 404 в производственной среде (в дополнение к разработке), если URL-адрес запроса не соответствует ни одному из шаблонов URL-адресов?
Примечание:
- Согласно docs , если у меня есть
404.html
в корневом каталоге шаблонов, этот 404.html будет использоваться с обработчиком ошибок по умолчанию.
Обновление:
Я понял, что он взломан, потому что defaults.page_not_found
поднимает Resolver404
, и это вызвано:
путь, пройденный для разрешения (), не отображается в представлении
что и произошло, (/ad
не соответствует ни одному виду)
вот мой urls.py:
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)