Django - 页面未找到 (404)



什么是 404 页面未找到错误?

HTTP 协议定义了各种状态码来指示不同类型的 HTTP 响应。“404”是 HTTP 状态码,表示服务器无法找到请求的网页。它被称为“404 错误”,也称为“404 未找到错误”或“HTTP 404 未找到”。

Django 的 404 错误默认模板

在 Django 中,给定的 URL 路由映射到某个视图。当 URL 没有对应的视图时,可能会出现 404 错误。

让我们输入一个在 Django 项目的 URLCONF 中未定义的 URL 路由 -

Django Page Not Found 1

使用 **startproject** 模板创建的 Django 项目将 DEBUG 参数设置为 TRUE。当找不到视图且 DEBUG 设置为 TRUE 时,会出现上述页面。这是 Django 的 404 错误代码的默认模板。

渲染自定义错误页面

要渲染自定义错误页面,请在 "settings.py" 模块中将 DEBUG 参数设置为 FALSE。此外,您需要指定 ALLOWED_HOSTS 列表,例如 localhost 或某个域名,例如 **https://example.com**。对于任何主机名,将此参数设置为 "*"。

DEBUG = False
ALLOWED_HOSTS = ["*"]

进行这些更改后,与之前图中相同的 URL 不会显示任何 DEBUG 消息。

Django Page Not Found 2

您可以进一步设计一个自定义模板,将其命名为 "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>

现在,每当找不到视图时,都会显示此页面。

Django Page Not Found 3

自定义 404 错误响应的另一种方法是在项目文件夹下的 "views.py" 文件中定义一个 **handler404() 视图**。

**注意** - views.py 模块默认位于应用文件夹中。您需要在项目文件夹中显式创建它。

views.py

from django.shortcuts import render

def handler404(request, exception):
   return render(request, '404handler.html')

然后,通过在项目的 URLCONF 中使用 **handler404** 变量将 **handler404() 函数**分配给它,指示 Django 在找不到视图时渲染此模板。

urls.py

from django.contrib import admin
from django.urls import path
from . import views

handler404 = views.handler404

urlpatterns = [
   path('admin/', admin.site.urls),
]

404handler.html

将以下 HTML 脚本另存为 **404handler.html**,放在 **templates** 文件夹中 -

<html>
<body>
   <h2 style="text-align: center; color: blue; 
      font-weight:900;">The Page is Not found</h2>
   <br>
   <br>
   <a href="../home"><b>Back to Home</b></a>
</body>
</html>

访问任何未定义的 URL 路由以渲染此自定义的 404 错误页面。

Django Page Not Found 4
广告