在我的代码中,名为data的变量名称包含名称为'username'和'user $ id'
的dict如果我做{{data.username}}一切正常。 但如果我{{data.user $ id}},则不会显示任何内容。
如何使用escape $来使Django模板工作?
答案 0 :(得分:1)
Django Template不允许dollor字符位于变量名ref the doc内:
变量名称由字母数字字符和下划线(“_”)的任意组合组成。点(“。”)也出现......
在Django shell中
>>> from django.template import *
>>> Template("{{ data.user$id }}").render(Context({'data':{'user$id':'foo'}}))
...
TemplateSyntaxError: Could not parse the remainder: '$id' from 'data.user$id'
# "{[" also does not work
>>> Template("{[ data.user$id }}").render(Context({'data':{'user$id':'foo'}}))
u'{[ data.user$id }}'
因此,您需要将键明确表示为字符串
{% for k, v in data.iteritems %}
{% if k == 'user$id' %}{{ v }}{% endif %}
{% endfor %}
或者写一个作为{% get_value data "user$id" %}