第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

沒有在 Django 中調(diào)用 process_template_response

沒有在 Django 中調(diào)用 process_template_response

哆啦的時光機 2022-07-26 21:52:10
在views.py我使用render().在 app -> middleware.py 我有這個代碼:from django.conf import settingsclass NoTrackingMiddleware:    def __init__(self, get_response):        self.get_response = get_response    def __call__(self, request):        response = self.get_response(request)        return response    def process_template_response(self, request, response):        no_tracking = True if request.GET.get("NO_TRACKING", default=False) is not False else False        pub_id = "PUBLISHER_TEST" if no_tracking is True else settings.WFF_PUB_ID        response.context_data["no_tracking"] = no_tracking        response.context_data["pub_id"] = pub_id        return response在settings.py我有:MIDDLEWARE = [...    'app.middleware.NoTrackingMiddleware',]然而,如果我在它處放置一個斷點,process_template_response它就會被忽略并且pub_id總是空的。為什么?
查看完整描述

1 回答

?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗 獲得超11個贊

文檔(強調(diào)我的):

process_template_response()在視圖完成執(zhí)行后立即調(diào)用,如果響應(yīng)實例有render()方法,則表明它是 aTemplateResponse或等效的。

您聲明您正在使用django.http.shortcuts.render,其文檔內(nèi)容如下:

將給定的模板與給定的上下文字典相結(jié)合,并返回一個HttpResponse帶有該呈現(xiàn)文本的對象。

Django 不提供返回 a 的快捷函數(shù),TemplateResponse因為 的構(gòu)造函數(shù)TemplateResponse提供與render().

因此render返回 a HttpResponse,而不是 a TemplateResponse,并且如上所述,process_template_response只為TemplateResponses 調(diào)用。

您要么需要將視圖更改為 return TemplateResponse,而不是使用render快捷方式,要么在其他地方執(zhí)行您的邏輯。我認(rèn)為您的邏輯可以在上下文處理器而不是中間件中實現(xiàn)。


查看完整回答
反對 回復(fù) 2022-07-26
  • 1 回答
  • 0 關(guān)注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號