最适合网络开发者的网站
Django。初学者课程

尿素 西斯

Django if 标签


If 语句

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

例子

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

埃利夫

elif 关键字表示“如果先前的条件不成立,则尝试这个条件”。

例子

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

括号内不允许 if Django 中的语句,因此当你组合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 运算符计算结果为真:

我们将通过使用 {% 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 %} 
运行示例 »


评论