欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Django中間件簡析-創(chuàng)新互聯(lián)

上一篇簡單的敘述了CSRF這個中間件的作用,他在執(zhí)行視圖函數之前可以對csrftoken進行驗證,如果通過才執(zhí)行否則直接報錯。

創(chuàng)新互聯(lián)從2013年成立,先為儋州等服務建站,儋州等地企業(yè),進行企業(yè)商務咨詢服務。為儋州企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

那么什么是中間件呢?這個要回到Django的生命周期里面。一個基本的生命周期是用戶輸入一個URL,通過urls.py找到對應的視圖函數,然后進行數據處理,返回渲染后的結果。在url和視圖函數的匹配過程中,還有一個重要的過程,就是依次執(zhí)行所有的中間件的類里面的函數。

還是以csrf中間件為例,看看他的源碼截圖如下,他繼承了一個MiddlewareMixin 類,里面還定義了一些特殊的固定名字的函數,例如 process_view, process_response等等,如果需要自定義一個中間件,我們也需要這些東西。

Django中間件簡析

下面看看實例來解釋他們的用途。

定義一個m1.py文件,里面是我們自定義的中間件,這里創(chuàng)建了3個類,每個類就是一個中間件

rom django.utils.deprecation import MiddlewareMixin
class Row1(MiddlewareMixin):
    def process_request(self,request):
        print('R11')
    def process_view(self, request, view_func, view_func_args, view_func_kwargs):
        print('R12')
    def process_response(self, request, response):
        print('R13')
        return response
from django.shortcuts import HttpResponse
class Row2(MiddlewareMixin):
    def process_request(self,request):
        print('R21')
        # return HttpResponse('走')
    def process_view(self, request, view_func, view_func_args, view_func_kwargs):
        print('R22')
    def process_response(self, request, response):
        print('R23')
        return response
class Row3(MiddlewareMixin):
    def process_request(self,request):
        print('R31')
    def process_view(self, request, view_func, view_func_args, view_func_kwargs):
        print('R32')
    def process_response(self, request, response):
        print('R33')
        return response
    def process_exception(self, request, exception):
        if isinstance(exception,ValueError):
            return HttpResponse('出現異?!?。。')
    def process_template_response(self,request,response):
        # 如果Views中的函數返回的對象中,具有render方法
        print('-----------------------')
        return response

下面是系統(tǒng)默認的中間件配置,他的執(zhí)行順序是從上往下執(zhí)行的。如果需要添加自定義的中間件,可以直接添加在下面

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.m1.Row1',
    'Middle.m1.Row2',
    'Middle.m1.Row3',
   
]

最后是我的視圖函數

def test(request):
    print('執(zhí)行View函數')
    return HttpResponse('ok')

整個流程的執(zhí)行順序是發(fā)送Url請求,然后中間件按從上到下順序執(zhí)行自己的 process_request函數,然后掉過頭來再從上到下執(zhí)行process_view函數,然后到達視圖函數,如果有錯誤,按照從下往上的順序來執(zhí)行 process_exception函數,如果無誤,執(zhí)行每個中間件的process_response函數

下圖轉自網絡

Django中間件簡析

因此如果輸入http://127.0.0.1:8000/test ,控制臺輸出結果是

R11
R21
R31
R12
R22
R32
執(zhí)行View函數
R33
R23
R13

如果在process_view里面執(zhí)行了HttpResponse的返回操作,那么他會直接跳過process_view和視圖函數,而直接跳到當前中間件的process_response,然后一路返回

例如:修改Row2

from django.shortcuts import HttpResponse
class Row2(MiddlewareMixin):
    def process_request(self,request):
        print('R21')
        return HttpResponse('走')

那么結果直接顯示

Django中間件簡析

R11
R21
R23
R13

如果我故意執(zhí)行一個報錯的代碼,比如

def test(request):
    print('執(zhí)行View函數')
    int('sdsfsdfs')
    return HttpResponse('ok')

Django中間件簡析

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

當前名稱:Django中間件簡析-創(chuàng)新互聯(lián)
文章地址:http://chinadenli.net/article46/cdjgeg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供響應式網站、微信公眾號網站設計、營銷型網站建設商城網站、自適應網站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都做網站
欧美日韩亚洲国产精品| 国产午夜免费在线视频| 91插插插外国一区二区| 国产欧美一区二区色综合| 国产极品粉嫩尤物一区二区 | 日韩丝袜诱惑一区二区| 青青操视频在线播放免费| 精品一区二区三区不卡少妇av| 中文字幕人妻日本一区二区| 午夜久久精品福利视频| 91亚洲精品国产一区| 欧美av人人妻av人人爽蜜桃 | 日韩美成人免费在线视频| 国产欧美日韩在线一区二区| 一区二区三区四区亚洲另类| 久久99夜色精品噜噜亚洲av| 中文字幕区自拍偷拍区| 午夜精品在线观看视频午夜| 亚洲一区二区三区福利视频| 97人摸人人澡人人人超碰| 欧美成人久久久免费播放| 国产日产欧美精品大秀| 亚洲一区二区三区三州| 国产成人亚洲综合色就色| 国产成人精品午夜福利av免费| 又大又长又粗又猛国产精品| 亚洲伦理中文字幕在线观看| 精品日韩视频在线观看| 成人综合网视频在线观看| 午夜国产成人福利视频| 国产午夜精品美女露脸视频| 中文字幕人妻av不卡| 国产情侣激情在线对白| 欧美日不卡无在线一区| 欧美一区二区三区十区| 精品久久久一区二区三| 亚洲精品一区二区三区日韩| 亚洲熟妇中文字幕五十路| 亚洲综合色在线视频香蕉视频 | 国产一区二区三区四区中文| 少妇熟女亚洲色图av天堂|