M.A*_*hah 5 django django-urls django-errors
我在 python 3.6.7 中使用 Django 2.1.3。假设我有这个 URL 路径:
path('admin/', admin.site.urls)
Run Code Online (Sandbox Code Playgroud)
如果我浏览到/ad,而DEBUG = True我看到普通的Django 404错误页面:

但是,如果我让DEBUG = False服务器向我显示500.htm而不是404.html无效的 URL /ad(不匹配任何 URL 模式)。
该404.html是否会显示该引发404错误一个有效的URL。(例如当函数发生不存在的对象查询时get_object_or_404)
这是我的/templates目录结构:
/templates
400.html
403.html
404.html
500.html
index.html
...
Run Code Online (Sandbox Code Playgroud)
那么,如果请求 URL 不匹配任何 URL 模式,我应该如何告诉 Django 在生产中(除了开发之外)显示 404 错误?
笔记:
404.html在根模板目录中有一个,则此 404.html 将与默认错误处理程序一起使用。更新:
我发现这是因为defaults.page_not_found引发了 a Resolver404,这是由以下原因引起的:
传递给 resolve() 的路径没有映射到视图
这正是发生的事情,(/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)
Run Code Online (Sandbox Code Playgroud)
我发现我的自定义模板上下文处理器之一使用django.urls.resolve并且由于路径与任何视图都不匹配,因此resolve引发Resolver404。
所以我修复了上下文处理器,问题就解决了!
| 归档时间: |
|
| 查看次数: |
1404 次 |
| 最近记录: |