https访问报错404_21. Django 2.1.7 视图 自定义404错误、500错误

本文介绍了如何在Django 2.1.7中自定义404和500错误页面。首先,展示了在调试模式关闭后Django的默认错误页面,然后详细说明了如何通过在模板目录下创建404.html来自定义404错误页面。接着,讨论了如何处理视图错误以定制500错误页面,并提到了错误页面的美化和静态文件在非安全模式下的服务配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3db97239ad5e3b4880dd2ed942f3dbbc.png

上一篇Django 2.1.7 模型管理器 models.Manager 以及 元选项

讲述了关于Django模型管理类以及如何设置表名、字段名的元选项内容。

在了解了Django的模型相关知识点之后,那么再来详细看看Django的视图。 前面我也基本写了Django 2.1.7 视图,讲解了url地址的转发配置,参数获取等内容。

那么本篇章再看看如何自定义404错误、500错误等错误页。

参考文献

https://docs.djangoproject.com/zh-hans/2.1/ref/views/

首先看看开启了调试模式的Django错误页

88c1e864ba617d6ac1264d71819a1ce0.png

任意访问一个不存在的url路径,Django在调试模式下就会返回错误信息。那么下面来关闭调试模式。

关闭调试模式

打开项目/settings.py文件,修改以下两项:

DEBUG = True

ALLOWED_HOSTS = []

改为

DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1']

其中放行的 ALLOWED_HOSTS 则是允许访问的域名或者IP地址,如果所有都放行可以配置ALLOWED_HOSTS = ['*']。不然会报错如下:

F:\pythonProject\django-pratice>python3 manage.py runserver
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.

重启启动服务,访问刚才不存在的url路径,如下:

449a0534cec7d7427c34e58440ae45b8.png

可以看到Django默认的404错误页了,显然不是很好看,那么我能不能自定义这个页面呢?

自定义404页面

自定义404页面当然是可以的,这个首先需要理解Django的模板的html查找顺序。 Django的模板首先是在项目setting配置的模板路径进行优先第一个查看,然后再看应用下有没有配置templates路径,如果有则进入查看,如果没有,则进入最后Django内置的模板路径下去查找html。

那么说了那么多,怎么去自定义404错误页面?

其实只需要在模板路径下建立一个404.html页面即可,因为只要在第一优先模板路径找到了,Django也不会继续往下查找了。

在模板下创建一个404.html

77b486e1fc832f7bb0a0993290574590.png

再次访问页面看看是不是出现自定义的404错误页,如下:

fb804c44f4f4de0681d8df8d2bdb3b05.png

可以看到已经是返回自定义的404错误页了。

而且使用内置的模板变量{{ request_path }}还可以设置查看这个访问的错误路径,如下:

d6a1e0087a1ddb90d640b0c2674c674e.png

页面访问如下:

3c1767d0c32079210ea3e362c2d0492a.png

那么其他500,503等错误页是不是也是一样的做法呢?当然是的。

自定义500页面 - 视图出错

当视图内的参数之类发生错误,访问则会提示如下:

893c164a1a271a32a3496a8be8f75741.png

下面也对这个500错误页面进行自定义,如下:

c2d3da16c759dbaa541d449f72737c5e.png

浏览器访问如下:

255cdff49fe48bf7ea9ec9c46f90ab09.png

优化错误页面

上面的两个示例错误页面肯定是不好看的,当然要优化一下,如下:

f0ddeffb5f6ba9b8107e0ad61407cd13.png
e92fc7e515a5467f2774a50fe5654dae.png

在这里要注意一下,关闭调试模式后,默认static静态文件Django是不提供服务的,需要改变未非安全的启动方式才会提供,如下:

python3 manage.py runserver --insecure

增加--insecure参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值