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。變量值是指向某個項目應用的視圖函數,而被指向的視圖函數需要設置相應的模板文件和響應狀態碼。

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