Django - 在模板之前访问上下文字典

gar*_*ark 2 django django-middleware django-context

我希望在实际渲染之前使用上下文处理器或中间件来修改传递给render_to_response的字典的值.我有一个我正在尝试实现的消息传递模式,它将基于我想在呈现模板之前搜索上下文的用户类型的存在来填充消息列表.

例:

def myview(...):
    ...
    return render_to_response('template.html',
        {'variable': variable},
    )
Run Code Online (Sandbox Code Playgroud)

并且我希望能够在"变量"存在的情况下向上下文添加其他信息.

如何在我的视图定义之后但在它到达模板之前访问"变量"以便我可以进一步修改上下文?

Mik*_*bov 5

使用TemplateResponse:

from django.template.response import TemplateResponse

def myview(...):
    ...
    return TemplateResponse(request, 'template.html', 
        {'variable': variable},
    )

def my_view_wrapper(...):
    response = my_view(...)
    variable = response.context_data['variable']
    if variable == 'foo':
        response.context_data['variable_is_foo'] = True
    return response
Run Code Online (Sandbox Code Playgroud)