【发布时间】:2019-03-22 09:07:12
【问题描述】:
我有一个 Jinja2 模板,其中解析为布尔值 False 的变量在 {% if %} 语句中被忽略。
模板的相关块看起来像
{% if user.can_manage_techniques %}j
{% block submenu_items %}
<li class="pure-menu-item"><a href={{ url_for('new_technique') }} class="pure-menu-link">New Technique</a></li>
{% endblock %}
{% endif %}
用户在渲染模板中设置为
return render_template('technique_list.j2',
techniques=Technique.find_all(),
**state())
state 是一个返回 dict[string, object] 的函数。
传递给它的用户在对象的__init__ 中设置为变量 - 所以:
def __init__(self):
self.can_manage_techniques = False
即使can_manage_techniques 为假,列表项仍会呈现。如何让{% if %} 意识到它是错误的并转到{% endif %}?
我也试过== true和sameas true
【问题讨论】:
-
如果您尝试显示 `user.can_manage_techniques` 会发生什么?
-
如果我使用 {{ user.can_manage_techniques }} Jinja2 将其填写为“False”(不带引号)
-
我这边无法复制...