Python 从templatetag返回多个值后,在with语句中分配多个变量
django模板中的with语句中是否有分配多个变量的方法。我想在从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
{% 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 %}