从模板标签

时间:2017-05-11 20:49:00

标签: python django django-templates

有没有办法在django模板中的with语句中分配多个变量。从模板标签

返回多个值后,我想在with语句中分配多个变量

我的用例是:

{% with a,b,c=object|get_abc %}
    {{a}}
    {{b}}
    {{c}}
{% endwith %} 

3 个答案:

答案 0 :(得分:2)

如果没有自定义模板标签,我认为不可能。

但是如果你的方法总是返回相同的长度,你可以像下面那样更紧凑:

{% with a=var.0 b=var.1 c=var.2 %}
  ...
{% endwith %}

答案 1 :(得分:2)

我不确定这是否允许,但是允许从docs多次分配。

但是你可以将这3个变量分配给1个变量,这将使它成为tuple对象,你可以很容易地通过它的索引进行迭代。

{% with var=object|get_abc %}
  {{ var.0 }}
  {{ var.1 }}
  {{ var.2 }}
{% endwith %}

答案 2 :(得分:0)

它没有得到支持,它不是Django模板语言的缺陷,它没有做到这一点,它的哲学如docs中所述:

  

Django模板系统不仅仅是嵌入到HTML中的Python。这个   是设计的:模板系统用于表达演示,   不是程序逻辑

您可以做的是在Python端准备您的数据并返回适当的格式,这将很容易在模板中访问,因此您可以返回字典而使用带有键名称的点分表示法:

{# assuming get_abc returns a dict #}
{% with var=object|get_abc %}
  {{ var.key_a }}
  {{ var.key_b }}
  {{ var.key_c }}
{% endwith %}