我有许多使用上下文的自定义标签:
@register.assignment_tag(takes_context=True)
@register.simple_tag(takes_context=True)
例如:
@register.assignment_tag(takes_context=True)
def get_items(context):
return context['obj'].items.all()
但是显然context
对象不像view.get_context_data
返回的字典那样,而是context
是RequestContext
对象,它更多的是字典列表带有一些条目和嵌套数据。上下文数据以某种嵌套结构埋在其中,但是我不知道如何访问它。
文档建议,如果您的视图中包含以下上下文数据:
context = {'obj': instance}
在自定义标记函数中访问context['obj']
时,您将访问相同的上下文。但这似乎并非如此。
为什么context
是RequestContext
而不是数据字典,就像文档建议的那样?
然后如何在自定义标签中访问上下文数据?
答案 0 :(得分:1)
RequestContext实现字典接口。它 与您通常在模板中使用的视图传递的内容相同。您只需像访问其他任何词典一样访问您的项目,context['obj']
就可以正常工作。