亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Django 中使用 process_view() 創建基于函數的中間件?

如何在 Django 中使用 process_view() 創建基于函數的中間件?

三國紛爭 2023-08-15 17:30:50
我正在使用標準實現來實現新的中間件:def my_middleware(get_response):    def middleware(request):        return get_response(request)    return middleware我想得到view_args. 我可以改為基于類的中間件并實現該方法process_view(request, view_func, view_args, view_kwargs)有沒有其他方法可以在我的中間件中獲取這些 view_args、view_kwargs 而無需更改為基于類的中間件?
查看完整描述

2 回答

?
DIEA

TA貢獻1820條經驗 獲得超2個贊

設置為函數process_view(...)的屬性 為middleware(...)


def process_view(request, view_func, view_args, view_kwargs):

    """

    do something

    """



def simple_middleware(get_response):

    # One-time configuration and initialization.


    def middleware(request):

        # Code to be executed for each request before

        # the view (and later middleware) are called.


        response = get_response(request)


        # Code to be executed for each request/response after

        # the view is called.


        return response


    middleware.process_view = process_view


    return middleware


查看完整回答
反對 回復 2023-08-15
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

*?process_view()應該返回None一個HttpResponse對象,否則會出現錯誤。

該函數具有process_view()

def process_view(request, view_func, view_args, view_kwargs):

? ? # Do something


def simple_middleware(get_response):

? ? # One-time configuration and initialization.


? ? def middleware(request):

? ? ? ? # Code to be executed for each request before

? ? ? ? # the view (and later middleware) are called.


? ? ? ? response = get_response(request)

? ? ? ? # Code to be executed for each request/response after

? ? ? ? # the view is called.


? ? ? ? return response


? ? middleware.process_view = process_view # Here


? ? return middleware

班級有process_view():


class SimpleMiddleware:

? ? def __init__(self, get_response):

? ? ? ? self.get_response = get_response

? ? ? ? # One-time configuration and initialization.


? ? def __call__(self, request):

? ? ? ? # Code to be executed for each request before

? ? ? ? # the view (and later middleware) are called.


? ? ? ? response = self.get_response(request)


? ? ? ? # Code to be executed for each request/response after

? ? ? ? # the view is called.


? ? ? ? return response


? ? def process_view(self, request, view_func, view_args, view_kwargs):

? ? ? ? # Do something


查看完整回答
反對 回復 2023-08-15
  • 2 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號