djangoテンプレートのwith文で複数の変数を割り当てる方法はありますか?私はそれがカスタムtemplatetagなしで可能だとは思わないtemplatetagから複数の値を返すと、with文で複数の変数を割り当てる
{% with a,b,c=object|get_abc %}
{{a}}
{{b}}
{{c}}
{% endwith %}
djangoテンプレートのwith文で複数の変数を割り当てる方法はありますか?私はそれがカスタムtemplatetagなしで可能だとは思わないtemplatetagから複数の値を返すと、with文で複数の変数を割り当てる
{% with a,b,c=object|get_abc %}
{{a}}
{{b}}
{{c}}
{% endwith %}
:私は私のユースケースはこれです
templatetagから複数の値を戻した後の文とで複数の変数を割り当てるしたいと思います。あなたの方法は常に同じ長さを返す場合 は、しかし、あなたはこのようなことは、よりコンパクトに行うことができます。{% with a=var.0 b=var.1 c=var.2 %}
...
{% endwith %}
私は許さこのように、しかしからdocs複数の割り当てが許可されていることはよく分かりません。
しかし、これらの3つの変数を1つの変数に割り当てることができます。この変数は、tuple
というオブジェクトになります。このオブジェクトはインデックスで簡単に反復できます。
{% with var=object|get_abc %}
{{ var.0 }}
{{ var.1 }}
{{ var.2 }}
{% endwith %}
そのdocsに述べたように、それはその理念、ということをしないことをDjangoのテンプレート言語の欠陥を支持し、そのことではない:
Djangoのテンプレートシステムは、単にPythonはに埋め込まれていませんHTML。これは は仕様です:テンプレートシステムはプレゼンテーションを表現するために意図され、 ないプログラムロジック
あなたは何ができるかは、そう、Pythonの側で、あなたのデータを準備し、テンプレートにアクセスしやすいだろう、適切な形式を返すです代わりに辞書を返し、キー名付きのドット表記を使用することができます。
{# assuming get_abc returns a dict #}
{% with var=object|get_abc %}
{{ var.key_a }}
{{ var.key_b }}
{{ var.key_c }}
{% endwith %}