Django if 标签


If 语句

一个if语句计算变量并在值为 true 时执行代码块。

示例

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

Elif

这个elif关键字为"if the previous conditions were not true, then try this condition"。

示例

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

别的

这个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 %} 
运行示例 »

检查多个条件是否为真。

示例

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

或者

检查条件之一是否为真。

示例

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

和/或

结合andor

示例

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

不允许使用括号ifDjango 中的语句,所以当你组合andor运算符,重要的是要知道添加括号是为了and但不是为了or

这意味着解释器会这样读取上面的示例:

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

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

示例

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

不在

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

示例

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

检查两个对象是否相同。

该运算符不同于==运算符,因为==运算符检查两个对象的值,但是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 is var2 %}
    <h1>YES</h1>
  {% else %}
    <h1>NO</h1>
  {% endif %}
{% endwith %}
运行示例 »

不是

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

示例

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