python - 自定义模板标签获取上下文:为什么上下文是 RequestContext 而不是字典?
问题描述
我有许多带有上下文的自定义标签:
@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
aRequestContext
而不是数据字典,就像文档建议的那样?
那么如何访问我的自定义标签中的上下文数据呢?
解决方案
RequestContext 实现了字典接口。它与您通常在模板中使用的视图传递的相同。您只需像访问任何其他字典一样访问您的项目,并且context['obj']
可以正常工作。
推荐阅读
- r - 获取错误(as.character(FUN),模式=“功能”,环境=环境):找不到模式“功能”的对象“乐趣”
- javascript - 如何从 Lambda 发布 mqtt 到 AWS Shadow
- arrays - 按照格式将 DataFrame 转换为多维数组
- assembly - 将伪代码转换为汇编代码
- python - mousePressEvent 对 QLabel 不起作用
- stream - 如何使用流 api 来定义约束规则,例如这样
- php - 两次或多次保存后在线考试成绩重复
- amazon-web-services - 为什么我收到一条错误消息,指出存在未解决的 VPC 依赖项?
- javascript - 如何使@submit 调用的函数起作用?
- python - Pyenv 在 Ubuntu 20.04 上找不到系统 python (3.8)