我目前正在尝试使用(3)个条件,这些条件基于一个名为Tld
的表中的信息。
视图.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)
模板.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()
中的任何内容。
这很奇怪,因为它应该显示<h1>show ADD TLD form</h1>
的原始if()
语句值,因为Tld
表中没有数据,所以它会落入elif User_No_Auth_Tld > 0
语句中似乎很奇怪。
我的观点有什么不正确的地方吗?
谢谢。
User_Tld_Entered
、User_No_Auth_Tld
和User_Auth_Tld
是查询集,而不是整数。要测试它们是否为空,您应该使用类似的代码
{% if not User_Tld_Entered %}
...
{% elif User_No_Auth_Tld %}
...
{% elif User_Auth_Tld %}
...
{% endif %}
您尚未在任何查询集上调用.count()
。您的比较只是针对查询对象进行的。查询对象本身总是大于0,即使查询的实际结果是空的。