Django 简明教程
Django - Page Not Found (404)
What is 404 Page Not Found Error?
HTTP 协议定义了各种状态代码来指示不同类型的 HTTP 响应。 “404” 是当服务器找不到请求的网页时对应的 HTTP 状态代码。它被称为 “404 错误”,也称为 “404 未找到错误” 或 “HTTP 404 未找到”。
Django’s Default Template for 404 Error
在 Django 中,某个 URL 路由会映射到某个视图。当 URL 没有对应的视图时,可能会出现 404 错误。
让我们输入一个在 Django 项目的 URLCONF 中未定义的 URL 路由 −
使用 startproject 模板创建的 Django 项目,将 DEBUG 参数设置为 TRUE。当找不到视图,并且 DEBUG 设置为 TRUE 时,将显示以上页面。这是 Django 404 错误代码的默认模板。
Render a Custom Error Page
若要呈现自定义错误页面,请在 "setings.py" 模块中将 DEBUG 参数设置为 FALSE。此外,你需要指定 ALLOWED_HOSTS 列表,例如 localhost 或某个域,如 https://example.com 。将此参数设置为 "*" 以适用于任何主机名。
DEBUG = False
ALLOWED_HOSTS = ["*"]
在进行这些更改之后,同样的 URL 不会显示任何 DEBUG 消息,如前一幅图中那样。
你可以进一步设计一个自定义模板,将其命名为 "404.html",并将其放置在 "BASE_DIR/template" 文件夹中。
404.html
<html>
<body>
<h2 style="text-align: center; color: blue;
font-weight:900;">The Page is Not found</h2>
</body>
</html>
现在,只要未找到视图,就会显示此页面。
自定义 404 错误响应的另一种方法是在项目文件夹下的 " views.py " 文件中定义 handler404() view 。
Note − view.py 模块默认位于 app 文件夹中。你需要在项目文件夹中显式创建相同的模块。
views.py
from django.shortcuts import render
def handler404(request, exception):
return render(request, '404handler.html')
然后,通过在项目的 URLCONF 中将 handler404 variable 分配给 handler404() function ,指导 Django 在找不到视图时呈现此模板。