1

我有一个设置上下文变量的 django 模板标签(它从模型中获取随机图像,但对于本示例,假设它获取随机数)

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

这工作正常。

但是,我需要在我的页面中的两个不同块中获得相同的“随机”数字:

{% 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 %}

这显然不起作用,因为我得到了两个不同的结果(除非偶然,它们是相同的!)

那么如何使用模板标签来设置跨两个模板块一致的上下文变量呢?

这样做是行不通的 - 上下文变量仅限于它创建的块......

{% 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_number1 个号码,然后在模板中的任意位置使用它。

于 2012-07-02T13:08:01.400 回答