说我有一个类似的字典:
settings = {
'info:ip': '127.0.0.1',
'info:browser': 'chrome'
}
我想在django模板中访问这些项目,如:
The IP is {{settings.info:ip}} .
“info:ip”是一个有效的字典键,但不是一个有效的变量名或django模板名,我似乎无法达到它。
我意识到我可以使用不同的字典键,但由于几个原因它很不方便。在我的模板中获取该字典键的任何其他方式?
答案 0 :(得分: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
答案 1 :(得分:0)
这个怎么样?
settings = {
'info': {
'ip': '127.0.0.1',
'browser': 'chrome'
}
}
并像{{ settings.info.ip }}
一样使用它?
这是你的选择吗?