Django2.X-异常响应

异常响应

异常响应是指HTTP状态码或500的响应状态,它与正常的响应过程(HTTP状态码为200的响应过程)是一样的,只是HTTP状态码有所不同,因此使用函数render作为响应过程,并且设置参数status的状态码(404或500)即可实现异常响应。
同一个网站的每种异常响应所返回的页面都是相同的,因此网站的异常响应必须适用于整个项目的所有应用。而在Django中配置全局的异常响应,必须在项目名的urls.py文件配置。以MyDjango为例,在MyDjango文件夹的urls.py中定义路由以及在index文件夹的views.py中定义视图函数,代码如下:

# MyDjango的urls.py
from django.urls import path, include
urlpatterns = [
    # 指向index的路由文件urls.py
    path('', include(('index.urls', 'index'), namespace='index')),
]
# 全局404页面配置
handler404 = 'index.views.pag_not_found'
# 全局500页面配置
handler500 = 'index.views.page_error'

# index的views.py
from django.shortcuts import render
def pag_not_found(request):
    """全局404的配置函数 """
    return render(request, '404.html', status=404)


def page_error(request):
    """全局500的配置函数 """
    return render(request, '500.html', status=500)

在MyDjango文件夹的urls.py里设置handler404和handler500,分别指向index文件夹的view.py的视图函数pag_not_found和page_error。当用户请求不合理或服务器发生异常时,Django就会根据请求信息执行相应的异常响应。视图函数分别使用404.html和500.html,因此在templates文件夹里新增404.html和500.html,代码如下:

# template文件夹下的404.html和500.html
# 404.html
<!DOCTYPE html>
<html>
<body>
<h3>这是404页面</h3>
</body>
</html>

# 500.html
<!DOCTYPE html>
<html>
<body>
<h3>这是500页面</h3>
</body>
</html>

上述内容是设置Django全局404和500的异常响应,只需在项目的urls.py中设置变量handler404和handler500。变量值是指向某个项目应用的视图函数,而被指向的视图函数需要设置相应的模板文件和响应状态码。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章