Django 404(页面未找到)

页面未找到

如果您尝试访问一个不存在的页面(404 错误),Django 会将您重定向到一个内置的 404 错误处理视图。

您将在本章后面学习如何自定义此 404 视图,但首先,请尝试请求一个不存在的页面。

在浏览器窗口中,在地址栏输入 127.0.0.1:8000/masfdfg/。

您将看到以下两种结果之一:

1:

2:

如果您看到的是第一种结果,则表示您已跳转到 Django 内置的 404 页面。

如果您得到第二个结果,则说明您的设置中 DEBUG 设置为 True,您必须将其设置为 False 才能跳转到 404 模板。

这需要在项目文件夹下的 settings.py 文件中完成,在本例中,该文件位于 my_tennis_club 文件夹中。您还需要在该文件中指定项目运行所在的主机名。

示例

将 debug 属性设置为 False,并允许项目在本地主机上运行:

my_tennis_club/my_tennis_club/settings.py:


.
.
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ['*']
.
.

重要提示:当 DEBUG = False 时,Django 要求您指定允许此 Django 项目运行的主机。

在生产环境中,应将其替换为正确的域名:

ALLOWED_HOSTS = ['yourdomain.com']

在浏览器地址栏中输入 127.0.0.1:8000/masfdfg/,即可看到内置的 404 模板:


自定义 404 模板

Django 会在 templates 文件夹中查找名为 404.html 的文件,并在出现 404 错误时显示该文件。

如果该文件不存在,Django 将显示您在上方示例中看到的"未找到"提示。

要自定义此消息,您只需在 templates 文件夹中创建一个名为 404.html 的文件,并在其中填写您想要的内容即可:

my_tennis_club/members/templates/404.html:

<!DOCTYPE html>
<html>
<title>Wrong address</title>
<body>

<h1>Ooops!</h1>

<h2>I cannot find the file you requested!</h2>

</body>
</html>

在浏览器窗口的地址栏中输入 127.0.0.1:8000/masfdfg/,即可获得自定义的 404 模板:


重置 Debug = True

您应该将 debug 属性重置为 True 以继续本教程。

示例

my_tennis_club/my_tennis_club/settings.py:


.
.
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []
.
.