继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

django2配置全局404

LayLowMay
关注TA
已关注
手记 7
粉丝 4
获赞 17

在django(不知道什么版本但2.x可以)配置全局404页面的时候,我们往往不需要自己多做处理,只需要在项目目录下的templates目录中引入一个404.html就可以实现自定义的404页面。

但贪心的我显然认为一个静态的页面无法满足我的需求。在我的想法中,一个能够处理请求的方法才是最好的处理。但根据网课老师的教导,我给django的URLconf配置了404相关的配置,可是依然不起效。

https://img4.mukewang.com/5b8784c9000139de19921332.jpg

我又问了许多大神,都没有人能回答我,于是我使用pycharm进行断点追踪。我发现django2在处理exception会经过这个类,然后其中会调用URLconf的handler相关的变量和状态码拼装(如handler404)进行方法调用。

https://img3.mukewang.com/5b87824e0001699216221216.jpg

如上图红框当中,django2在callback调用handler404变量指定的方法时,除了传入request参数还有**kwargs(**dict(param_dict, exception=exception))。这就让handler404指定的方法必须加入这个参数,所以要这样写才能够满足404异常处理。

https://img1.mukewang.com/5b87834c0001cfbc10520330.jpg

之前失败的原因是因为def中只有request一个参数



打开App,阅读手记
5人推荐
发表评论
随时随地看视频慕课网APP

热门评论

嗯,很好的文章,但是实际上只需要定义一个exception参数就行了,官网已经有说明了https://img3.mukewang.com/5bcd22a3000198f517800368.jpg

感谢

终于找到解决办法了

查看全部评论