如何使用Django模板语法判断变量是否为False

{% if myvar == False %}

似乎不管用.

请注意,我非常明确地想判断它是否具有Python值False.这个变量也可以是一个空数组,这就是我要判断的not.

推荐答案

Django 1.10(release notes)if标记中添加了isis not比较运算符.此更改使模板中的身份测试变得非常简单.

In[2]: from django.template import Context, Template

In[3]: context = Context({"somevar": False, "zero": 0})

In[4]: compare_false = Template("{% if somevar is False %}is false{% endif %}")
In[5]: compare_false.render(context)
Out[5]: u'is false'

In[6]: compare_zero = Template("{% if zero is not False %}not false{% endif %}")
In[7]: compare_zero.render(context)
Out[7]: u'not false'

如果您使用的是较旧的Django,那么从1.5 (release notes)版开始,模板引擎将TrueFalseNone解释为相应的Python对象.

In[2]: from django.template import Context, Template

In[3]: context = Context({"is_true": True, "is_false": False, 
                          "is_none": None, "zero": 0})

In[4]: compare_true = Template("{% if is_true == True %}true{% endif %}")
In[5]: compare_true.render(context)
Out[5]: u'true'

In[6]: compare_false = Template("{% if is_false == False %}false{% endif %}")
In[7]: compare_false.render(context)
Out[7]: u'false'

In[8]: compare_none = Template("{% if is_none == None %}none{% endif %}")
In[9]: compare_none.render(context)
Out[9]: u'none'

尽管它并不像人们预期的那样工作.

In[10]: compare_zero = Template("{% if zero == False %}0 == False{% endif %}")
In[11]: compare_zero.render(context)
Out[11]: u'0 == False'

Django相关问答推荐

在Django的反向函数中添加动态URL

获取PyCharm中继承方法的未解析属性引用

Django没有';t显示黄页

通过父模型查询子对象-Django

如何自动删除 Django 模型中的字段值?

通过get_form_kwargs将请求传递给Django表单未能使表单访问self.request.user.

使用自定义的AuthBackend时,无法使用request.user.is_authenticated或@login_required修饰符

将两个视图重定向到具有不同 url id Django 的一个模板的正确方法

如何在Django中制作一个不 Select 以前日期的日期 Select 器

基于模型多选字段在模板django中显示结果

关于Django中批量保存对象的问题

Django RESTful API - django-piston vs. django-tastypie

将计数字段添加到 django rest 框架序列化程序

使用移动应用程序保护通信 [真实性、隐私和完整性]?

Django rest-auth allauth 注册,带有邮箱、名字和姓氏,没有用户名

Django:创建索引:非唯一,多列

在 Django 1.8 或更高版本中填充时出现Models aren't loaded yet"错误

单击弹出框会滚动回页面顶部 [Bootstrap 和 Django]

Django unique=True 不工作

更改 Django ModelChoiceField 以显示用户的全名而不是用户名