多个条件Django模板

时间:2013-11-29 21:26:39

标签: python django if-statement for-loop

我目前正在尝试使用(3)基于名为Tld的表格中的信息的条件。

views.py

#check if current auth. user has ENTERED any domains
User_Tld_Entered = Tld.objects.filter(FKtoClient_id=request.user)

#check if current auth. user has any UNAUTHORIZED domains
User_No_Auth_Tld = Tld.objects.filter(FKtoClient_id=request.user,auth=0)

#check if current auth. user has any AUTHORIZED domains
User_Auth_Tld = Tld.objects.filter(FKtoClient_id=request.user,auth=1)

templates.py

{% if User_Tld_Entered == 0  %} <!-- show ADD TLD form -->

    <h1>show ADD TLD form</h1>

{% elif User_No_Auth_Tld > 0 %} <!--display unauth domains, with auth link-->

    <h1>display unauth domains, with auth link</h1>
        {% for unauth_domain in User_No_Auth_Tld %}
            {{ unauth_domain }}
        {% endfor %}

{% elif User_Auth_Tld > 0 %} <!--display auth domains, with scan form-->
    <h1>show diff form</h1>
{% endif %}

当我访问我的模板时,它会显示<h1>display unauth domains, with auth link</h1>,但不会显示for()中的任何内容。

这很奇怪,因为它应该显示原始的if()语句值<h1>show ADD TLD form</h1>,因为Tld表中没有数据,看起来很奇怪它会落入elif User_No_Auth_Tld > 0 {1}}陈述。

我的views.py变量是不正确的?

谢谢。

2 个答案:

答案 0 :(得分:2)

User_Tld_EnteredUser_No_Auth_TldUser_Auth_Tld是查询集,而不是整数。要测试它们是否为空,您应该使用类似

的代码
{% if not User_Tld_Entered %}
     ...
{% elif User_No_Auth_Tld %}
     ...
{% elif User_Auth_Tld %}
     ...
{% endif %}

答案 1 :(得分:0)

您尚未在任何查询集上调用.count()。您的比较只是针对查询对象进行的。查询对象本身始终大于0,即使查询的实际结果为空。