有没有办法在django模板中的with语句中分配多个变量。从模板标签
返回多个值后,我想在with语句中分配多个变量我的用例是:
{% with a,b,c=object|get_abc %}
{{a}}
{{b}}
{{c}}
{% endwith %}
答案 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 %}