1

したがって、template.htmlでは次を使用します。

{% if dict %}
{{ s={} }}
{% endif %}

エラーは-残りを解析できませんでした:'= {}' from's={}'。それを修正する方法は?

4

5 に答える 5

3

Djangoテンプレートは、辞書の作成には実際には使用しないでください。ビューで作成し、基本的な処理のみをテンプレートで実行する必要があります。

これは、MVCデザインパターンに厳密に準拠するための意図的な方法です。

ここから参照してください:https ://docs.djangoproject.com/en/dev/topics/templates/

哲学

プログラミングのバックグラウンドがある場合、またはプログラミングコードを直接HTMLにミックスするPHPのような言語に慣れている場合は、Djangoテンプレートシステムが単にHTMLに埋め込まれたPythonではないことに注意してください。これは仕様によるものです。テンプレートシステムは、プログラムロジックではなく、プレゼンテーションを表現することを目的としています。

Djangoテンプレートシステムは、ブールテスト用のifタグ、ループ用のforタグなど、一部のプログラミング構造と同様に機能するタグを提供しますが、これらは対応するPythonコードとして単純に実行されるのではなく、テンプレートシステムは任意に実行されません。 Python式。以下にリストされているタグ、フィルター、および構文のみがデフォルトでサポートされています(ただし、必要に応じて独自の拡張機能をテンプレート言語に追加できます)。

dictある条件に基づいて作成したいものの見た目によって。おそらく、ロジックを再配置dictしてビューに作成する必要があります。この方法でPythonのすべての機能を活用することもできます。

あなたがそれをより詳細に説明するならば、あなたの状況にはおそらくたくさんの回避策があるでしょう。

于 2012-10-20T09:05:05.803 に答える
2

それはまだグーグル検索の最初であり、それは良い解決策を持っていません。(私の意見では)

私の解決策:

カスタムテンプレートタグ

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 %}
于 2021-04-11T17:38:33.620 に答える
1

テンプレートではできません。これはテンプレートの目的ではありません。代わりに、ビューまたはカスタムテンプレートタグでこのロジックを実行する必要があります。

于 2012-10-20T08:58:09.250 に答える
1

DjangoでJinja2を使用する場合は、これを行うことができます。Jinja2は、Djangoテンプレートライブラリよりも多くの機能とパフォーマンスを備えています。Jinja2では、次のようにdictを設定できます。

{% set my_dict = { 'my_val_1': 1,'my_val_2': 2, } %}

また、ループ内のdict変数を更新できます。これにより、スコープの問題がスキップされます。

于 2018-05-22T04:27:22.173 に答える
0

テンプレートにPythonコードを直接入れることはできません。ただし、if条件で変数を特定の値に設定できます。withタグを使用してそれを行うことができます

{% with alpha=1 beta=2 %}
    ...
{% endwith %}
于 2012-10-20T08:59:37.440 に答える