Python社区  »  Django

Django中未调用进程模板响应

Saturnix • 1 周前 • 19 次点击  

views.py 我用 render() .

from django.conf import settings


class 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

为什么?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54662
 
19 次点击  
分享到微博
文章 [ 1 ]  |  最新文章 1 周前
solarissmoke
Reply   •   1 楼
solarissmoke    1 周前

documentation (强调我的):

process_template_response() 如果响应实例具有 render() 方法,指示它是 TemplateResponse .

django.http.shortcuts.render ,谁的 documentation

将给定的模板与给定的上下文词典组合并返回 HttpResponse 对象的文本。

Django不提供返回 因为 模板响应 渲染() .

render 返回 ,不是 模板响应 process_template_response 只需要 模板响应 s。

你要么改变你的看法 模板响应 提供 捷径,或在别处执行逻辑。我认为你的逻辑可以在 context processor