したがって、template.htmlでは次を使用します。
{% if dict %}
{{ s={} }}
{% endif %}
エラーは-残りを解析できませんでした:'= {}' from's={}'。それを修正する方法は?
したがって、template.htmlでは次を使用します。
{% if dict %}
{{ s={} }}
{% endif %}
エラーは-残りを解析できませんでした:'= {}' from's={}'。それを修正する方法は?
Djangoテンプレートは、辞書の作成には実際には使用しないでください。ビューで作成し、基本的な処理のみをテンプレートで実行する必要があります。
これは、MVCデザインパターンに厳密に準拠するための意図的な方法です。
ここから参照してください:https ://docs.djangoproject.com/en/dev/topics/templates/
哲学
プログラミングのバックグラウンドがある場合、またはプログラミングコードを直接HTMLにミックスするPHPのような言語に慣れている場合は、Djangoテンプレートシステムが単にHTMLに埋め込まれたPythonではないことに注意してください。これは仕様によるものです。テンプレートシステムは、プログラムロジックではなく、プレゼンテーションを表現することを目的としています。
Djangoテンプレートシステムは、ブールテスト用のifタグ、ループ用のforタグなど、一部のプログラミング構造と同様に機能するタグを提供しますが、これらは対応するPythonコードとして単純に実行されるのではなく、テンプレートシステムは任意に実行されません。 Python式。以下にリストされているタグ、フィルター、および構文のみがデフォルトでサポートされています(ただし、必要に応じて独自の拡張機能をテンプレート言語に追加できます)。
dict
ある条件に基づいて作成したいものの見た目によって。おそらく、ロジックを再配置dict
してビューに作成する必要があります。この方法でPythonのすべての機能を活用することもできます。
あなたがそれをより詳細に説明するならば、あなたの状況にはおそらくたくさんの回避策があるでしょう。
それはまだグーグル検索の最初であり、それは良い解決策を持っていません。(私の意見では)
私の解決策:
カスタムテンプレートタグ
from django import template
import ast
register = template.Library()
@register.simple_tag
def create_dict(str_dict):
return ast.literal_eval(str_dict)
そしてテンプレートで
{% load yout_tag_file %}
{% create_dict "{ 'my_val_1': ['test', 'test', 'test'],'my_val_2': 2, }" as config %}
{% for key, value in config.items %}
{{key}} - {{value}}
{% endfor %}
テンプレートではできません。これはテンプレートの目的ではありません。代わりに、ビューまたはカスタムテンプレートタグでこのロジックを実行する必要があります。
DjangoでJinja2を使用する場合は、これを行うことができます。Jinja2は、Djangoテンプレートライブラリよりも多くの機能とパフォーマンスを備えています。Jinja2では、次のようにdictを設定できます。
{% set my_dict = { 'my_val_1': 1,'my_val_2': 2, } %}
また、ループ内のdict変数を更新できます。これにより、スコープの問題がスキップされます。
テンプレートにPythonコードを直接入れることはできません。ただし、if条件で変数を特定の値に設定できます。withタグを使用してそれを行うことができます
{% with alpha=1 beta=2 %}
...
{% endwith %}