Python公开课 - Django自定义404/404/500页面的两种方法

背景

我们在进行Web开发的过程中,如果404/403/500这样的错误返回,仅仅返回一个错误码,或者一个简陋的普通页面,那么用户体验会非常一般。

另外当网站进行迁移的过程中,如果因为业务调整,之前被搜索引擎收录的URL可能失效或者需要禁止访问,我们也需要考虑通过自定义错误页面来提升用户体验。

当你使用Django进行开发的过程中,如果想要实现这个效果,非常简单,下面介绍两种方案

方案一 - Django 官方推荐配置

按照官方文档的说明

In order to show customized HTML when Django returns a 404, you can create an HTML template named 404.html and place it in the top level of your template tree. This template will then be served when DEBUG is set to False.

When DEBUG is True, you can provide a message to Http404 and it will appear in the standard 404 debug template. Use these messages for debugging purposes; they generally aren’t suitable for use in a production 404 template.

我们仅仅只用在模板目录下,新增一个404.html,同时将debug模式改为False即可实现

方案二 - Nginx配置

# 关键参数:这个变量开启后,我们才能自定义错误页面,当后端返回404,nginx拦截错误定义错误页面

proxy_intercept_errors on;
error_page    404  /404.html;

location = /404.html {

root   /usr/share/nginx/html;

}

我们将自定义的404.html放入到nginx的html目录中,同时开启proxy_intercept_errors也可以实现这个功能。