亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是Django框架的中間件

發布時間:2020-08-25 09:22:04 來源:億速云 閱讀:161 作者:Leah 欄目:編程語言

這篇文章運用簡單易懂的例子給大家介紹什么是Django框架的中間件,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

django的中間件是一個用來處理Django的請求和響應的框架級別的鉤子。它是一個輕量、低級別的插件系統,用于在全局范圍內改變Django的輸入和輸出。每個中間件組件都負責做一些特定的功能。

但是由于其影響的是全局,所以需要謹慎使用,使用不當會影響性能。

說的直白一點中間件是幫助我們在視圖函數執行之前和執行之后都可以做一些額外的操作,它本質上就是一個自定義類,類中定義了幾個方法,Django框架會在請求的特定的時間去執行這些方法。

我們一直都在使用中間件,只是沒有注意到而已,打開Django項目的Settings.py文件,看到下圖的MIDDLEWARE配置項。

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',
]

MIDDLEWARE配置項是一個列表,列表中是一個個字符串,這些字符串其實是一個個類,也就是一個個中間件。

我們之前已經接觸過一個csrf相關的中間件了?我們一開始讓大家把他注釋掉,再提交post請求的時候,就不會被forbidden了,后來學會使用csrf_token之后就不再注釋這個中間件了。

Django中間件的運行原理:

那接下來就學習中間件中的方法以及這些方法什么時候被執行。

請求到達中間件之后,先按照正序執行每個注冊中間件的process_reques方法,process_request方法返回的值是None,就依次執行,如果返回的值是HttpResponse對象,不再執行后面的process_request方法,而是執行當前對應中間件的process_response方法,將HttpResponse對象返回給瀏覽器。

也就是說:如果MIDDLEWARE中注冊了6個中間件,執行過程中,第3個中間件返回了一個HttpResponse對象,那么第4,5,6中間件的process_request和process_response方法都不執行,順序執行3,2,1中間件的process_response方法。

process_request方法都執行完后,匹配路由,找到要執行的視圖函數,先不執行視圖函數,先執行中間件中的process_view方法,process_view方法返回None,繼續按順序執行,所有process_view方法執行完后執行視圖函數。加入中間件3 的process_view方法返回了HttpResponse對象,則4,5,6的process_view以及視圖函數都不執行,直接從最后一個中間件,也就是中間件6的process_response方法開始倒序執行。

process_template_response和process_exception兩個方法的觸發是有條件的,執行順序也是倒序。總結所有的執行流程如下:

什么是Django框架的中間件

關于什么是Django框架的中間件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沧源| 泰和县| 康定县| 临桂县| 南郑县| 定结县| 股票| 西林县| 江门市| 葫芦岛市| 酒泉市| 盐城市| 黄龙县| 石屏县| 天祝| 绥德县| 西平县| 黄骅市| 阿克陶县| 宝山区| 林口县| 长汀县| 南丹县| 衡东县| 大邑县| 德兴市| 呼玛县| 克拉玛依市| 克山县| 扶风县| 湖口县| 清原| 保山市| 洪江市| 汾阳市| 张家口市| 西昌市| 太仓市| 茂名市| 和平区| 当阳市|