我有一个观点login()
:
from django.http import HttpRequest
from useraccounts.models import BadIP
def login(request):
client_address = request.META['REMOTE_ADDR']
client_instance = BadIP.objects.get(ip_address=client_address)
if client_instance.ban_state == True:
return render(request, 'login.html', {'banned':True})
else:
return render(request, 'login.html', {'banned':False})
一个模板:
{% if banned == False %}
<p>Content</p>
{% endif %}
{% if banned == True %}
<p>Content #2</p>
{% endif %}
根据这些标准,两个段落都不会在模板中呈现。但是,如果我将True
和False
出现的代码中的实例更改为字符串,则突然模板呈现正常。为什么会发生这种情况,是否有任何方法可以将此行为更改为更明显/语义正确?
答案 0 :(得分:1)
它们已经是布尔变量了!无需与他们True
或False
进行比较。试试这个:
{% if banned %}
<p>Content</p>
{% else %}
<p>Content #2</p>
{% end if %}