愚公系列2022年01月 Python教學課程 51-Django框架之中間件

      網友投稿 604 2022-05-30

      一、中間件

      Django中的中間件是一個輕量級、底層的插件系統,可以介入Django的請求和響應處理過程,修改Django的輸入或輸出。中間件的設計為開發者提供了一種無侵入式的開發方式,增強了Django框架的健壯性。

      我們可以使用中間件,在Django處理視圖的不同階段對輸入或輸出進行干預。

      中間件文檔

      1.中間件的定義方法

      定義一個中間件工廠函數,然后返回一個可以被調用的中間件。

      中間件工廠函數需要接收一個可以調用的get_response對象。

      返回的中間件也是一個可以被調用的對象,并且像視圖一樣需要接收一個request對象參數,返回一個response對象。

      def simple_middleware(get_response): # 此處編寫的代碼僅在Django第一次配置和初始化的時候執行一次。 def middleware(request): # 此處編寫的代碼會在每個請求處理視圖前被調用。 response = get_response(request) # 此處編寫的代碼會在每個請求處理視圖之后被調用。 return response return middleware

      例如,在book應用中新建一個middleware.py文件,

      def my_middleware(get_response): print('init 被調用') def middleware(request): print('before request 被調用') response = get_response(request) print('after response 被調用') return response return middleware

      定義好中間件后,需要在settings.py 文件中添加注冊中間件

      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', 'book.middleware.my_middleware', # 添加中間件 ]

      定義一個視圖進行測試

      def middleware(request): print('view 視圖被調用') return HttpResponse('OK')

      執行結果

      注意:Django運行在調試模式下,中間件init部分有可能被調用兩次。

      2,多個中間件的執行順序

      在請求視圖被處理前,中間件由上至下依次執行

      在請求視圖被處理后,中間件由下至上依次執行

      示例:

      定義兩個中間件

      def my_middleware(get_response): print('init 被調用') def middleware(request): print('before request 被調用') response = get_response(request) print('after response 被調用') return response return middleware def my_middleware2(get_response): print('init2 被調用') def middleware(request): print('before request 2 被調用') response = get_response(request) print('after response 2 被調用') return response return middleware

      【愚公系列】2022年01月 Python教學課程 51-Django框架之中間件

      注冊添加兩個中間件

      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', 'users.middleware.my_middleware', # 添加 'users.middleware.my_middleware2', # 添加 ]

      執行結果

      init2 被調用 init 被調用 before request 被調用 before request 2 被調用 view 視圖被調用 after response 2 被調用 after response 被調用

      Django

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:使用 QGIS修復缺失數據的柵格
      下一篇:實戰fabric.js教程及API
      相關文章
      色偷偷亚洲第一综合网| 亚洲色精品VR一区区三区| 亚洲国产成人资源在线软件| 国产av无码专区亚洲av桃花庵| 国产成人亚洲影院在线观看| 亚洲中文字幕无码爆乳av中文| 亚洲?v无码国产在丝袜线观看| 亚洲av无码专区在线电影| 亚洲国产精品99久久久久久| 亚洲欧美国产日韩av野草社区| 亚洲乱码av中文一区二区| 亚洲成av人在线观看网站| 国产成人精品久久亚洲高清不卡 | 久久亚洲国产午夜精品理论片| 国产亚洲精aa成人网站| 国产亚洲AV手机在线观看| 亚洲综合熟女久久久30p| 日韩亚洲一区二区三区| 亚洲AV无码第一区二区三区 | 亚洲AV无码AV吞精久久| 国产精品亚洲专区在线播放| 亚洲不卡AV影片在线播放| 亚洲综合另类小说色区色噜噜| 中文字幕亚洲天堂| 久久精品国产精品亚洲艾| 亚洲成人午夜在线| 亚洲日韩乱码久久久久久| 精品日韩99亚洲的在线发布| 亚洲熟女乱色一区二区三区| 日韩国产精品亚洲а∨天堂免| 亚洲高清无码综合性爱视频| 久久久青草青青国产亚洲免观| 亚洲精品国产字幕久久不卡| 亚洲爱情岛论坛永久| 亚洲欧洲日本国产| 亚洲人成网站色7799| 亚洲国产天堂久久久久久| 久久精品国产精品亚洲精品 | 亚洲日韩区在线电影| 91亚洲国产成人久久精品| 亚洲熟女乱色一区二区三区|