- 中間件是一個(gè)獨(dú)立的 python 類
- 可以介入 Django 的請(qǐng)求和響應(yīng)處理過(guò)程蚕断,修改 Django 的輸入或輸出
- 中間件的設(shè)計(jì)為開(kāi)發(fā)者提供了一種無(wú)侵入式的開(kāi)發(fā)方式眨攘,增強(qiáng)了 Django 框架的健壯性
- Django在中間件中預(yù)置了六個(gè)方法
- 初始化:無(wú)需任何參數(shù)主慰,服務(wù)器響應(yīng)第一個(gè)請(qǐng)求的時(shí)候調(diào)用一次,用于確定是否啟用當(dāng)前中間件
def __init__():
pass
- 處理請(qǐng)求前:在每個(gè)請(qǐng)求上調(diào)用鲫售,返回 None 或 HttpResponse 對(duì)象
def process_request(request):
pass
- 處理視圖前:在每個(gè)請(qǐng)求上調(diào)用共螺,返回 None 或 HttpResponse 對(duì)象
def process_view(request, view_func, view_args, view_kwargs):
pass
- 處理模板響應(yīng)前:在每個(gè)請(qǐng)求上調(diào)用,返回實(shí)現(xiàn)了 render 方法的響應(yīng)對(duì)象
def process_template_response(request, response):
pass
- 處理響應(yīng)后:所有響應(yīng)返回瀏覽器之前被調(diào)用情竹,在每個(gè)請(qǐng)求上調(diào)用藐不,返回HttpResponse 對(duì)象
def process_response(request, response):
pass
- 異常處理:當(dāng)視圖拋出異常時(shí)調(diào)用,在每個(gè)請(qǐng)求上調(diào)用秦效,返回一個(gè) HttpResponse對(duì)象
def process_exception(request,exception):
pass
Django 中間件.png