将值从装饰器传递到 Django 中的上下文处理器
Pass a value from a decorator to a context processor in django
在上下文处理器中,我希望能够访问在装饰器中设置的值。所以事件的顺序是:
- 装饰器设置值
- 上下文处理器 运行 可以访问值
- 视图已呈现
最终目标是能够有条件地运行 仅针对某些视图的上下文处理器。也许有比使用装饰器更好的方法?
您可以让装饰器向请求对象添加一个 属性,然后在上下文处理器中访问该值。
例如,您可以使用以下装饰器:
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:
...
在上下文处理器中,我希望能够访问在装饰器中设置的值。所以事件的顺序是:
- 装饰器设置值
- 上下文处理器 运行 可以访问值
- 视图已呈现
最终目标是能够有条件地运行 仅针对某些视图的上下文处理器。也许有比使用装饰器更好的方法?
您可以让装饰器向请求对象添加一个 属性,然后在上下文处理器中访问该值。
例如,您可以使用以下装饰器:
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:
...