我想知道如何在jinja中使用一个变量设置另一个变量。我来解释一下,我有一个子菜单,我想显示哪个链接是活跃的。我尝试了这个:
{% set active_link = {{recordtype}} -%}
recordtype是我的模板中给定的变量。
我想知道如何在jinja中使用一个变量设置另一个变量。我来解释一下,我有一个子菜单,我想显示哪个链接是活跃的。我尝试了这个:
{% set active_link = {{recordtype}} -%}
recordtype是我的模板中给定的变量。
{{ }}
指示模板打印该值,在您尝试的表达式中不起作用。而是使用{% set %}
模板标记,然后以与正常Python代码相同的方式分配该值。
{% set testing = 'it worked' %}
{% set another = testing %}
{{ another }}
结果:
it worked
{% set another = testing + " 无缺点" %}
{{ another }}
结果:
它完美地工作了
- LunkRat~
连接字符串,而不是 +
(请参见 https://jinja.palletsprojects.com/en/2.11.x/templates/#math) - Jean-Francois T.多变量赋值的简单写法
{% set label_cls, field_cls = "col-md-7", "col-md-3" %}
就像这样设置
{% set active_link = recordtype -%}
set
标签来实现此功能。请查看 官方文档。例如,{% set foo = "bar" %}
{{ foo }}
输出
bar
注意:存在作用域问题,这意味着变量值在循环迭代之间不会持久保留。例如,如果您想根据以前和当前的循环值之间的比较来设置某些输出条件:
{# **DOES NOT WORK AS INTENDED** #}
{% set prev = 0 %}
{% for x in [1, 2, 3, 5] %}
{%- if prev != x - 1 %}⋮ (prev was {{ prev }})
{% endif -%}
{{ x }}
{%- set prev = x %}
{% endfor %}
打印
1
⋮ (prev was 0)
2
⋮ (prev was 0)
3
⋮ (prev was 0)
5
因为变量并未持久化。相反,您可以使用可变的命名空间包装器:
{% set ns = namespace(prev=0) %}
{% for x in [1, 2, 3, 5] %}
{%- if ns.prev != x - 1 %}⋮ (ns.prev was {{ ns.prev }})
{% endif -%}
{{ x }}
{%- set ns.prev = x %}
{% endfor %}
打印
1
2
3
⋮ (ns.prev was 3)
5
如预期。