更新
或通用模板标签以利用允许任何文字字符串
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