我正在使用Python 3.6.7中的Django 2.1.3。
假设我有这个URL路径:
如果我在
对于引发404错误的有效URL(例如使用
这是我的
那么,我该如何告诉Django在生产环境下显示404错误(除了开发环境),如果请求的URL与所有URL模式均不匹配?
注意:
根据 docs ,如果在根模板目录中有一个
更新:
我发现这是因为
“传递给 resolve() 的路径没有映射到视图”,这正是所发生的(
这是我的urls.py:
path('admin/', admin.site.urls)
如果我在
DEBUG = True
的情况下导航到 /ad
,我会看到正常的Django 404错误页面:
DEBUG = False
,那么当访问无效的URL /ad
(不匹配任何URL模式)时,服务器会显示500.htm而不是404.html。对于引发404错误的有效URL(例如使用
get_object_or_404
函数进行不存在对象查询时),将显示404.html。这是我的
/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
,导致以下问题:“传递给 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)