データという名前のコード変数名には、「username」および「user$id」という名前のdictが含まれています
{{ data.username }} を実行すると、すべて問題ありません。しかし、{{ data.user$id }} を実行すると、何も表示されません。
$をエスケープしてDjangoテンプレートを機能させるにはどうすればよいですか?
データという名前のコード変数名には、「username」および「user$id」という名前のdictが含まれています
{{ data.username }} を実行すると、すべて問題ありません。しかし、{{ data.user$id }} を実行すると、何も表示されません。
$をエスケープしてDjangoテンプレートを機能させるにはどうすればよいですか?
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" %}