Django if 标签
If 语句
一个 if
语句会评估一个变量,如果其值为真,则执行一段代码。
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 %}
运行示例 »
Operators
上面的示例使用了 ==
运算符,用于检查变量是否等于某个值,但你还可以使用许多其他运算符,或者如果你只想检查变量是否不为空,则可以省略运算符。
==
等于。
!=
不等于。
<
小于。
<=
小于或等于。
>
大于。
>=
大于或等于。
and
检查是否多个条件都为真。
或
检查是否其中一个条件为真。
and/or
组合 and
和 or
。
Django 的 if
语句中不允许使用括号,因此当你组合 and
和 or
运算符时,重要的是要了解 and
会自动添加括号,而 or
则不会。
这意味着上面的示例由解释器这样读取:
{% if (greeting == 1 and day == "Friday") or greeting == 5 %}
in
检查某个项是否存在于某个对象中。
not in
检查某个项是否不存在于某个对象中。
is
检查两个对象是否相同。
此运算符与 ==
运算符不同,因为 ==
运算符会检查两个对象的 值,而 is
运算符会检查两个对象的 身份。
在视图中,我们有两个值相同的对象 x
和 y
。
示例
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))
这两个对象具有相同的值,但它们是同一个对象吗?
让我们尝试用 ==
运算符进行相同的示例。
两个对象如何能是同一个对象?嗯,如果你有两个对象指向同一个对象,那么 is
运算符就会评估为真。
我们将通过使用 {% with %}
标签来演示这一点,该标签允许我们在模板中创建变量。
示例
{% with var1=x var2=x %}
{% if var1 is var2 %}
<h1>YES</h1>
{% else %}
<h1>NO</h1>
{% endif %}
{% endwith %}
运行示例 »
is not
检查两个对象是否不相同。