【问题标题】:Getting the same context variable in two template blocks在两个模板块中获取相同的上下文变量
【发布时间】:2012-07-02 13:01:20
【问题描述】:

我有一个设置上下文变量的 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 %}

那么.. 我怎样才能将初始结果“保存”到其他地方,然后再调用它,如果它已经在调用之前生成了?

谢谢

【问题讨论】:

    标签: python django templatetags


    【解决方案1】:

    大概可以使用{% with %}标签

    {% with my_random_number=get_random_number %}
    
    {% block block1 %}
      {{ my_random_number }}
    {% endblock %}
    
    {% block block2 %}
      {{ my_random_number }}
    {% endblock %}
    
    {% endwith %}
    

    【讨论】:

      【解决方案2】:

      您可以将模板标签逻辑移到您的视图中。在您看来,您只需拨打get_random_number 获得1 个号码,然后在模板中的任意位置使用该号码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-26
        • 2014-06-08
        • 2012-01-25
        • 2016-06-20
        相关资源
        最近更新 更多