Python - Django - 中間件 process_request


process_request 函數是中間件在收到 request 請求之后執行的函數

該函數的執行順序是按照 settings.py 中中間件的配置順序執行的

如果該函數返回 None,繼續執行后面的中間件的 process_request 方法

如果該函數返回 response,則不再繼續執行后面的中間件的 process_request 方法

middleware_test.py:

from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import HttpResponse

allow_url = ["/admin/", "/news/", "/uploads/"]


class Test(MiddlewareMixin):
    def process_request(self, request):
        print("這是一個中間件 --> test")


class Test2(MiddlewareMixin):
    def process_request(self, request):
        print("這是一個中間件 --> test2")
        if request.path_info in allow_url:
            return
        else:
            return HttpResponse("這里是 HttpResponse")

views.py:

from django.shortcuts import HttpResponse


def index(request):
    print("這里是 index 頁面")
    return HttpResponse("這里是主頁面 index")

訪問,http://127.0.0.1:8000/index/

 

運行結果:

 

只執行到 Test2 這個中間件,沒有再執行 Test1 這個中間件,因為 Test2 返回了 response

如果訪問,http://127.0.0.1:8000/admin/

 

中間件 Test1 也執行了,因為訪問的 url 在 allow_url 內,所以 process_request 返回了一個 None,程序就繼續執行后續的中間件了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM