1

コンテキスト変数を設定するdjangoテンプレートタグがあります(モデルからランダムな画像を取得しますが、この例では、乱数を取得するとしましょう)

{% get_random_number %}
{{ my_random_number }} <!-- outputs a random number between 1 and 10 -->

これはうまくいきます。

ただし、ページ内の 2 つの異なるブロックで同じ「乱数」を取得する必要があります。

{% block block1 %}
  {% get_random_number %}
  {{ my_random_number }} <!-- outputs a random number between 1 and 10 -->
{% endblock %}

{% block block2 %}
  {% get_random_number %}
  {{ my_random_number }} <!-- outputs a random number between 1 and 10 -->
{% endblock %}

2つの異なる結果が得られるため、これは明らかに機能しません(偶然でなければ、それらは同じです!)

では、2 つのテンプレート ブロック間で一貫したコンテキスト変数を設定するには、templatetag をどのように使用すればよいでしょうか?

これを行うと機能しません-コンテキスト変数は、作成されたブロックに限定されます...

{% get_random_number %}

{% block block1 %}
  {{ my_random_number }}
{% endblock %}

{% block block2 %}
  {{ my_random_number }}
{% endblock %}

では、最初の結果を別の場所に「保存」してから、呼び出しの前に既に生成されている場合は、それを呼び出すにはどうすればよいですか?

ありがとう

4

2 に答える 2

4

おそらく、あなたは{% with %}タグを使うことができます

{% with my_random_number=get_random_number %}

{% block block1 %}
  {{ my_random_number }}
{% endblock %}

{% block block2 %}
  {{ my_random_number }}
{% endblock %}

{% endwith %}
于 2012-07-02T13:08:34.100 に答える
1

代わりに、テンプレートタグロジックをビューに移動できます。あなたの見解ではget_random_number、1つの番号を取得するために電話をかけるだけで、テンプレート内の必要な数の場所でそれを使用できます。

于 2012-07-02T13:08:01.400 に答える