在 django 模板中访问具有无效标识符的字典键
Posted
技术标签:
【中文标题】在 django 模板中访问具有无效标识符的字典键【英文标题】:Accessing dictionary keys with invalid identifiers in django templates 【发布时间】:2012-10-02 21:40:04 【问题描述】:假设我有一本看起来像这样的字典:
settings =
'info:ip': '127.0.0.1',
'info:browser': 'chrome'
我想在 django 模板中访问这些项目,如:
The IP is settings.info:ip .
"info:ip" 是一个有效的字典键,但不是一个有效的变量名或 django 模板名,我似乎无法找到它。
我意识到我可以使用不同的字典键,但由于几个原因它不方便。还有其他方法可以在我的模板中获取该字典键吗?
【问题讨论】:
【参考方案1】:更新 或者一个通用的模板标签来利用任何文字字符串是允许的
from django.template import Template, Context, defaulttags
@defaulttags.register.simple_tag
def getter(d, key):
return d.get(key, '')
>>> Template('% getter settings "x:y" %').render(Context("settings":'x:y':1))
1
然后写一个过滤器来解决它呢
from django.template import Template, Context, defaultfilters
@defaultfilters.register.filter(is_save=True)
def tiny_replace(value):
r =
for k, v in value.iteritems():
r[k.replace(':', '_')] = v
return r
>>> Template('% with s=settings|tiny_replace %s.x_y% endwith %').render(Context("settings":'x:y':1))
1
【讨论】:
【参考方案2】:这个呢
settings =
'info':
'ip': '127.0.0.1',
'browser': 'chrome'
并像 settings.info.ip
一样使用它?
这对你来说是一个选择吗?
【讨论】:
以上是关于在 django 模板中访问具有无效标识符的字典键的主要内容,如果未能解决你的问题,请参考以下文章