更新
または任意のリテラル文字列が許可されていることを利用するための一般的なテンプレート タグ
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