- Django 基本概念
- Django - 首页
- Django - 基础知识
- Django - 概览
- Django - 环境配置
- Django - 创建项目
- Django - 应用生命周期
- Django - 创建视图
- Django - URL 映射
- Django - 首页
- Django - 模板系统
- Django - MVT
- Django - 添加主模板
- Django 管理后台
- Django 管理后台 - 界面
- Django 管理后台 - 创建用户
- Django 管理后台 - 包含模型
- Django 管理后台 - 设置显示字段
- Django 管理后台 - 更新对象
- Django 模型
- Django - 模型
- Django - 插入数据
- Django - 更新数据
- Django - 删除数据
- Django - 更新模型
- Django 静态文件
- Django - 添加静态文件
- Django - 添加 CSS 文件
- Django 高级
- Django - 页面未找到 (404)
- Django - 页面重定向
- Django - 发送邮件
- Django - 通用视图
- Django - 表单处理
- Django - 文件上传
- Django - Apache 配置
- Django - Cookie 处理
- Django - 会话
- Django - 缓存
- Django - 评论
- Django - RSS
- Django - AJAX
- Django 有用资源
- Django - 快速指南
- Django - 有用资源
- Django - 讨论
Django - 页面未找到 (404)
什么是 404 页面未找到错误?
HTTP 协议定义了各种状态码来指示不同类型的 HTTP 响应。“404”是 HTTP 状态码,表示服务器无法找到请求的网页。它被称为“404 错误”,也称为“404 未找到错误”或“HTTP 404 未找到”。
Django 的 404 错误默认模板
在 Django 中,给定的 URL 路由映射到某个视图。当 URL 没有对应的视图时,可能会出现 404 错误。
让我们输入一个在 Django 项目的 URLCONF 中未定义的 URL 路由 -
使用 **startproject** 模板创建的 Django 项目将 DEBUG 参数设置为 TRUE。当找不到视图且 DEBUG 设置为 TRUE 时,会出现上述页面。这是 Django 的 404 错误代码的默认模板。
渲染自定义错误页面
要渲染自定义错误页面,请在 "settings.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() 视图**。
**注意** - 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 错误页面。