您现在的位置是:首页 > 学无止境 > web后端|数据库 网站首页学无止境

django2配置全局404

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

在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一个参数



文章评论

Top