如何在django中的变量名中转义$

时间:2013-02-25 09:40:33

标签: django django-templates

在我的代码中,名为data的变量名称包含名称为'username'和'user $ id'

的dict

如果我做{{data.username}}一切正常。 但如果我{{data.user $ id}},则不会显示任何内容。

如何使用escape $来使Django模板工作?

1 个答案:

答案 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" %}

的模板标签