Python 从templatetag返回多个值后,在with语句中分配多个变量

Python 从templatetag返回多个值后,在with语句中分配多个变量,python,django,django-templates,Python,Django,Django Templates,django模板中的with语句中是否有分配多个变量的方法。我想在从templatetag返回多个值后,在with语句中分配多个变量 我的用例是: {% with a,b,c=object|get_abc %} {{a}} {{b}} {{c}} {% endwith %} 我认为没有定制的templatetag是不可能的 但是,如果您的方法返回的长度始终相同,则可以这样做: {% with a=var.0 b=var.1 c=var.2 %} ... {% en

django模板中的with语句中是否有分配多个变量的方法。我想在从templatetag返回多个值后,在with语句中分配多个变量

我的用例是:

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

我认为没有定制的templatetag是不可能的

但是,如果您的方法返回的长度始终相同,则可以这样做:

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

我不确定这是允许的,但是允许从多个赋值

但您可以将这3个变量分配给1个变量,这将使其成为
tuple
对象,您可以通过其索引轻松地迭代该对象

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

它不受支持,Django模板语言的一个缺陷是它不这样做,其原理如:

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