在Tornado(Python)中if条件不生效

0 投票
3 回答
1301 浏览
提问于 2025-04-17 18:56

我遇到了一个问题。在一个Tornado处理器里,我把一些参数传递给我的HTML页面。

这个页面的代码是这样的:

 {% if not writeable %}
    {% if not usrpermdev %}
    $("#chart_div").html("<div class='alert'><strong>Warning!</strong> You don't have the permission to view this page.</div>")
    {% elif usrpermdev==0 %}
    $("#chart_div").html("<div class='alert'><strong>Warning!</strong> You don't have the permission to view this page.</div>")
    {% end %}
  ......

我这样做是因为我想根据一些权限来决定是否显示一个<div>元素。

现在,如果我在我的Tornado处理器里加一些打印语句,我发现比如说:

usrpermdev = [{'perm': 4L}]
writeable = False

那么,为什么我的代码在控制之后什么都不显示呢?

如果代码进入了if (not writeable)这个条件,就会检查usrpermdev是否存在。在这种情况下,程序应该不会进入接下来的两个if语句,而是继续往下执行……为什么没有发生这种情况呢?

补充说明:我什么都看不到……连警告提示都没有!所以程序没有进入if语句,但也没有继续执行……

3 个回答

-1

我把代码修正成这样:

{% if writeable=="False" %}
{% if not usrpermdev %}
$("#chart_div").html("<div class='alert'><strong>Warning!</strong> You don't have the permission to view this page.</div>")
{% elif usrpermdev==0 %}
$("#chart_div").html("<div class='alert'><strong>Warning!</strong> You don't have the permission to view this page.</div>")
{% end %}

这样看起来可以正常工作了... 不管怎样,谢谢你。

0

usrpermdev 既不符合 if 的条件,也不符合 elif 的条件。

1

我遇到的情况和你一样。

但是如果我设置了

{% if writeable=="False" %}

它还是不管用。看起来tornado在if条件里不太在乎布尔值。

如果你把可写的值改成True或者False,然后在你的模板里输出

{{ writeable }}

你会看到像这样的文本:

True

或者

False

但是它就是不执行if条件

附注:我用的是Linux上的tornado 4.2.1,真奇怪!


更新

解决了

我刚刚通过使用这个条件{% if writeable is False %}来解决了这个问题。记住,你应该在模板块下面使用这个,而不是在模板块上面使用if。

撰写回答