0

データという名前のコード変数名には、「username」および「user$id」という名前のdictが含まれています

{{ data.username }} を実行すると、すべて問題ありません。しかし、{{ data.user$id }} を実行すると、何も表示されません。

$をエスケープしてDjangoテンプレートを機能させるにはどうすればよいですか?

4

1 に答える 1

1

Django テンプレートでは、変数名内にドル記号を含めることはできません。ドキュメントを参照してください。

変数名は、英数字とアンダースコア ("_") の任意の組み合わせで構成されます。ドット(「.」)も表示されます...

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 に答える