django-中间件
1.django中間件的5個方法
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對象和None值,如果是None則按照規則繼續執行,如果為HttpResponse對象則直接將對象返回
2.django中間件的執行流程
(1)首先執行process_request函數,中間如果出現異常,則跳轉到當前中間件的response函數中執行并返回。
(2)如果process_request執行結束,則會執行process_view函數,view的功能是與處理函數view執行了一次路由映射
(3)通過response返回給客戶端
(4)process_exception是進行異常捕捉,如果視圖函數view中運行錯誤,則調用此函數進行捕捉
(5)運行視圖函數時,會進行異常捕捉,沒有捕捉到異常則報錯,捕捉到異常則會進行跳轉最底層的response中返回
(6)process_template_response(self,request,response)->了解一下即可
3.自定義中間件
創建目錄Middle,創建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.中間件注冊
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',#自定義中間的注冊'Middle.middleware.Row2','Middle.middleware.Row3', ]注意,中間件的執行順序按照配置自上向下
轉載于:https://www.cnblogs.com/wangxingwei/p/10956130.html
總結
以上是生活随笔為你收集整理的django-中间件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 误删了microsoft visual
- 下一篇: win10环境下如何给visual st