我有一个Jinja2模板,其中解析为boolean 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 %}
用户在渲染模板中设置为
^{pr2}$状态是返回dict[string,object]的函数。在
传递给它的用户在对象的__init__
中设置为变量-因此:
def __init__(self):
self.can_manage_techniques = False
即使can_manage_techniques
为false,列表项仍然呈现。我如何使{% if %}
意识到它是错误的并转到{
我也试过== true
和{
如果
{% if %}
语句在块之外-它将被忽略。如果它在块内,它就成功了。我不知道为什么-但这就是解决办法:我无法用下面的最小应用程序在本地复制您的问题:
在我看来,用法是正确的,所以你可能需要检查更多相关的代码。在
我在GitHub上检查了你的代码后发现了为什么会这样。此问题由模板继承行为引起:在子模板中,块外的内容将被跳过。在
由于模板是子模板,所以需要将if语句放入块中。在
我相信这可能是你如何定义},在python中它们应该是布尔类型(可以用}是{})。在
True
和{type(test)
进行测试)。这些不应该是字符串或其他东西。它总是返回true的原因可能是因为非空字符串的计算结果为true(例如Bool('false')
是True
,而{如果我运行以下任何一个,我会得到预期的结果:
^{pr2}$相关问题 更多 >
编程相关推荐