调试中不存在url的Django 500错误=False
我正在使用Python3.6.7中的Django 2.1.3。 假设我有以下URL路径:调试中不存在url的Django 500错误=False,django,django-urls,django-errors,Django,Django Urls,Django Errors,我正在使用Python3.6.7中的Django 2.1.3。 假设我有以下URL路径: path('admin/', admin.site.urls) 如果在DEBUG=True时导航到/ad,我会看到正常的Django 404错误页面: 但是如果我设置DEBUG=False,那么服务器会向我显示500.htm,而不是404.html,用于无效的URL/ad(不匹配任何URL模式) 404.html显示的是引发404错误的有效URL。(如使用get\u object\u或_404函数进行不
path('admin/', admin.site.urls)
如果在DEBUG=True
时导航到/ad
,我会看到正常的Django 404错误页面:
但是如果我设置DEBUG=False
,那么服务器会向我显示500.htm,而不是404.html,用于无效的URL/ad
(不匹配任何URL模式)
404.html显示的是引发404错误的有效URL。(如使用get\u object\u或_404
函数进行不存在对象的查询时)
这是我的/templates
目录结构:
/templates
400.html
403.html
404.html
500.html
index.html
...
那么,如果请求URL与任何URL模式都不匹配,我应该如何告诉Django在生产中显示404错误(除了开发之外)
注:
- 根据,如果我在根模板目录中有一个
,那么这个404.html将与默认的错误处理程序一起使用404.html
默认值。未找到的页面
引发了解析404
,这是由以下原因造成的:
传递给resolve()的路径未映射到视图
这正是发生的情况,(该/ad
与任何视图都不匹配)
这是我的URL.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)
您需要创建一个404视图,该视图将在没有URL匹配时呈现。然后您需要在
url.py中设置它hander404
handler404 = 'mysite.views.my_custom_page_not_found_view'
有关详细信息:我发现我的一个自定义模板上下文处理器使用django.url.resolve
,由于路径与任何视图都不匹配,因此resolve
将引发Resolver404
所以我修复了上下文处理器,问题就解决了 我只需要更改错误页面模板,但是我这样做了,并且得到了相同的结果,如果URL与任何URL模式都不匹配,则会显示500错误页面!添加URL.py您需要在URL.py中添加handler404