Django if 标签

If 语句

if 语句计算一个变量,如果值为真,则执行一段代码。

实例

{% if greeting == 1 %}
  <h1>Hello</h1>
{% endif %} 
运行实例 »

Elif

elif 关键字表示"如果前面的条件不成立,则试试这个条件"。

实例

{% if greeting == 1 %}
  <h1>Hello</h1>
{% elif greeting == 2 %}
  <h1>Welcome</h1>
{% endif %} 
运行实例 »

Else

else 关键字可以捕获前面条件未捕获的任何内容。

实例

{% if greeting == 1 %}
  <h1>Hello</h1>
{% elif greeting == 2 %}
  <h1>Welcome</h1>
{% else %}
  <h1>Goodbye</h1>
{% endif %} 
运行实例 »

运算符

上面的例子使用了==运算符,用来检查一个变量是否等于一个值, 但是您可以使用许多其他运算符,或者如果您只想检查变量是否不为空,甚至可以删除运算符:

实例

{% if greeting %}
  <h1>Hello</h1>
{% endif %} 
运行实例 »

==

等于。

实例

{% if greeting == 2 %}
  <h1>Hello</h1>
{% endif %} 
运行实例 »

!=

不等于。

实例

{% if greeting != 1 %}
  <h1>Hello</h1>
{% endif %} 
运行实例 »

<

小于。

实例

{% if greeting < 3 %}
  <h1>Hello</h1>
{% endif %} 
运行实例 »

<=

小于或等于。

实例

{% if greeting <= 3 %}
  <h1>Hello</h1>
{% endif %} 
运行实例 »

>

大于。

实例

{% if greeting > 1 %}
  <h1>Hello</h1>
{% endif %} 
运行实例 »

>=

大于或等于。

实例

{% if greeting >= 1 %}
  <h1>Hello</h1>
{% endif %} 
运行实例 »

and

检查多个条件是否为真。

实例

{% if greeting == 1 and day == "Friday" %}
  <h1>Hello Weekend!</h1>
{% endif %} 
运行实例 »

or

检查其中一个条件是否为真。

实例

{% if greeting == 1 or greeting == 5 %}
  <h1>Hello</h1>
{% endif %} 
运行实例 »

and/or

结合 andor

实例

{% if greeting == 1 and day == "Friday" or greeting == 5 %}
运行实例 »

在 Django 的 if 语句中不允许使用括号,所以当你结合 andor 运算符,重要的是要知道括号是为 and 而不是为 or 添加的。

意思是上面的例子是这样被解释器读取的:

{% if (greeting == 1 and day == "Friday") or greeting == 5 %}

in

检查某个项目是否存在于对象中。

实例

{% if 'Banana' in fruits %}
  <h1>Hello</h1>
{% else %}
  <h1>Goodbye</h1>
{% endif %} 
运行实例 »

not in

检查对象中是否不存在某个项目。

实例

{% if 'Banana' not in fruits %}
  <h1>Hello</h1>
{% else %}
  <h1>Goodbye</h1>
{% endif %} 
运行实例 »

is

检查两个对象是否相同。

这个操作符与==运算符不同,因为==运算符检查两个对象的值,而is运算符检查两个对象的身份。

在视图中,我们有两个对象,xy,具有相同的值:

实例

views.py:

from django.http import HttpResponse
from django.template import loader

def testing(request):
  template = loader.get_template('template.html')
  context = {
    'x': ['Apple', 'Banana', 'Cherry'], 
    'y': ['Apple', 'Banana', 'Cherry'], 
  }
  return HttpResponse(template.render(context, request))  

这两个对象的值相同,但是是同一个对象吗?

实例

{% if x is y %}
  <h1>YES</h1>
{% else %}
  <h1>NO</h1>
{% endif %}
运行实例 »

让我们用 == 运算符尝试相同的示例:

实例

{% if x == y %}
  <h1>YES</h1>
{% else %}
  <h1>NO</h1>
{% endif %}
运行实例 »

两个对象怎么可能相同? 好吧,如果您有两个指向同一个对象的对象,那么 is 运算符的计算结果为 true:

我们将通过使用 {% with %} 标签来演示这一点,它允许我们在模板中创建变量:

实例

{% with var1=x var2=x %}
  {% if var1 == var2 %}
    <h1>YES</h1>
  {% else %}
    <h1>NO</h1>
  {% endif %}
{% endwith %}
运行实例 »

is not

检查两个对象是否不相同。

实例

{% if x is not y %}
  <h1>YES</h1>
{% else %}
  <h1>NO</h1>
{% endif %} 
运行实例 »