在Tornado(Python)中if条件不生效
我遇到了一个问题。在一个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。