0

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

如果我这样做 {{ data.username }} 一切正常。但如果我这样做 {{ data.user$id }} 什么都不会显示。

如何转义 $ 以使 Django 模板工作?

4

1 回答 1

1

Django模板不允许dollor字符在变量名中,参考文档

变量名称由字母数字字符和下划线(“_”)的任意组合组成。点(“.”)也出现...

在 Django 外壳中

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

于 2013-02-25T11:19:56.313 回答