正在进入ing...

Django开发的网站设置网站404页面、500页面

发布时间:2021-03-21 浏览量: 1311 文章分类: python

通常来说,一般我部署的网站都是采用Django、Uwsgi、Nginx,不过最近其实我又喜欢用上Django、Daphne、Nginx来进行部署。原因还是Daphne感觉更加简单,而且还是基于twisted实现。。话题扯的有点远了。。关于部署的以后在说吧。

回到这个文章的问题,最早之前关于404\500的问题都是基于nginx来进行设置的。类似下面这种

error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
}

这样虽然也没问题,但是毕竟本身不属于程序的一部分,所以在后续修改的时候就会出现很多问题了。在翻看网上的资料的时候,找到了更好的解决办法。直接基于Django内置实现。 + 首先还是正常创建视图

class WebPageNotIsExceptView(View):
    # 网页 404\500 的错误处理函数
    def get(self,request):
        return render(request,'404.html')

这样写有一个好处,就是404.html可以继续在Django的template里面进行管理,继续继承base.html

  • 在url.py进行设置
from django.conf.urls import handler404,handler500 # 处理 404、500错误的异常

urlpatterns = [
    ...
]

handler404 = exception_handling_view.WebPageNotIsExceptView.as_view()
handler500 = .... #对应处理函数

按照上面这2步就可以轻松实现了。但是需要注意,如果DEBUG=True貌似是不能测试的,需要关闭Debug才可以。如果你想本地测试,可以先创建一个url路径为404的地址进行测试。测试开发完毕 在去掉这个url映射即可。

因为我的站点是没有制作这个功能的。 具体的实现效果可以参考 广州网站建设 来看看,你可以在打开后,url后面随便输入点错误的路径看看 404 是如何返回的。