我有以下Jinja模板:
{% set mybool = False %}
{% for thing in things %}
<div class='indent1'>
<ul>
{% if current_user %}
{% if current_user.username == thing['created_by']['username'] %}
{% set mybool = True %}
<li>mybool: {{ mybool }}</li> <!-- prints True -->
<li><a href='#'>Edit</a></li>
{% endif %}
{% endif %}
<li>Flag</li>
</ul>
</div>
<hr />
{% endfor %}
{% if not mybool %}
<!-- always prints this -->
<p>mybool is false!</p>
{% else %}
<p>mybool is true!</p>
{% endif %}
如果在
for
循环中满足条件,我想将mybool
更改为true,以便我可以在下面显示mybool is true!
。但是,内部mybool
的作用域似乎仅限于if
语句,因此从未设置所需的mybool
。如何设置“全局”
mybool
,以便我可以在最后的if
语句中使用它?
编辑
我发现了一些建议(只有缓存的页面正确),但它们似乎不起作用。也许它们在Jinja2中已过时...
编辑
下面提供解决方案。尽管如此,我仍然好奇上述建议为什么不起作用。有人确定它们已过时吗?
mybool
设置为上下文变量,并将其传递到模板中。 - Cameron