【发布时间】:2012-11-21 13:07:17
【问题描述】:
我正在尝试使用以下划线字符开头的键访问 dict 的元素。例如:
my_dict = {"_source": 'xyz'}
我正在尝试在 Django 模板中访问它们。显然,我意识到您无法从 Django 模板访问带下划线的 Python 变量(因为它们在 Python 中被认为是私有的),但这是一个 dict 对象,其中任何不可变对象都是有效键。
我无法使用 {{ my_dict._source }} 在 Django 模板中访问上述字典,所以我认为 Django 正在阻止它。那准确吗?
我有点希望 Django 对以下划线开头的变量做一些理智的事情,比如仍在进行 dict 查找(第一件事应该是尝试),但拒绝进行属性查找、方法调用和列表索引查找,因为带下划线的前缀变量会无效。不过我很快就失去了希望。
为了记录,我知道有人会建议只更改字典,但这实际上是在 ElasticSearch 实例上执行 REST API 请求时由 rawes 库返回的多级字典。
【问题讨论】:
-
如果这确实是 django,你可以创建一个自定义模板标签来返回私有变量。
-
“django 模板下划线变量”的谷歌搜索显示:groups.google.com/forum/?fromgroups=#!topic/django-users/… - 即,是的,您需要创建一个自定义模板标签。虽然这个线程很旧,但我怀疑功能已经改变。
-
它不是私有变量,它是一个完全合法的 dict 键,应该可以通过 dict 查找访问。真的试图避免制作模板标签。特别是因为 dict 对象可以像 {{ my_dict.hits._source._text }} 一样深入。
标签: python django elasticsearch