将值从装饰器传递到django中的上下文处理器

时间:2015-01-15 19:57:14

标签: django django-views decorator

在上下文处理器中,我希望能够访问在装饰器中设置的值。所以事件的顺序是:

  • decorator设置值
  • 上下文处理器以访问值
  • 运行
  • 视图呈现

最终目标是能够仅为某些视图有条件地运行上下文处理器。也许有比使用装饰更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以让装饰器向请求对象添加属性,然后在上下文处理器中访问该值。

例如,您可以使用以下装饰器:

def add_value(function):
    def wrap(request, *args, **kwargs):
        request.extra_value = True
        return function(request, *args, **kwargs)
    return wrap

然后您可以在上下文处理器中访问它:

def extra_value_context_processor(request):
    if request.extra_value:
        ...