django-中间件
1.django中間件的5個(gè)方法
process_request(self,request)
process_view(self, request, callback, callback_args, callback_kwargs)
process_template_response(self,request,response)
process_exception(self, request, exception)
process_response(self, request, response)
以上方法的返回值可以是HttpResponse對(duì)象和None值,如果是None則按照規(guī)則繼續(xù)執(zhí)行,如果為HttpResponse對(duì)象則直接將對(duì)象返回
2.django中間件的執(zhí)行流程
(1)首先執(zhí)行process_request函數(shù),中間如果出現(xiàn)異常,則跳轉(zhuǎn)到當(dāng)前中間件的response函數(shù)中執(zhí)行并返回。
(2)如果process_request執(zhí)行結(jié)束,則會(huì)執(zhí)行process_view函數(shù),view的功能是與處理函數(shù)view執(zhí)行了一次路由映射
(3)通過(guò)response返回給客戶(hù)端
(4)process_exception是進(jìn)行異常捕捉,如果視圖函數(shù)view中運(yùn)行錯(cuò)誤,則調(diào)用此函數(shù)進(jìn)行捕捉
(5)運(yùn)行視圖函數(shù)時(shí),會(huì)進(jìn)行異常捕捉,沒(méi)有捕捉到異常則報(bào)錯(cuò),捕捉到異常則會(huì)進(jìn)行跳轉(zhuǎn)最底層的response中返回
(6)process_template_response(self,request,response)->了解一下即可
3.自定義中間件
創(chuàng)建目錄Middle,創(chuàng)建middleware.py文件from django.utils.deprecation import MiddlewareMininclass row1(MiddlewareMinin):def process_request(self,request):print("request-1")def process_response(self,request,response):print("response-1)"return responsedef process_view(self, request, callback, callback_args, callback_kwargs):print("view-1")class row2(MiddlewareMinin):def process_request(self,request):print("request-2")def process_response(self,request,response):print("response-2)"return response def process_view(self, request, callback, callback_args, callback_kwargs):print("view-2")class row3(MiddlewareMinin):def process_request(self,request):print("request-3")def process_response(self,request,response):print("response-3)"return responsedef process_view(self, request, callback, callback_args, callback_kwargs):print("view-3")4.中間件注冊(cè)
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','Middle.middleware.Row1',#自定義中間的注冊(cè)'Middle.middleware.Row2','Middle.middleware.Row3', ]注意,中間件的執(zhí)行順序按照配置自上向下
轉(zhuǎn)載于:https://www.cnblogs.com/wangxingwei/p/10956130.html
總結(jié)
以上是生活随笔為你收集整理的django-中间件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 误删了microsoft visual
- 下一篇: win10环境下如何给visual st