📜  if – Django 模板标签

📅  最后修改于: 2022-05-13 01:55:23.320000             🧑  作者: Mango

if – Django 模板标签

Django 模板是使用 Django 模板语言标记的文本文档或Python字符串。 Django 是一个强大的包含电池的框架,为在模板中呈现数据提供了便利。 Django 模板不仅允许将数据从视图传递到模板,而且还提供了一些有限的编程功能,例如变量、for 循环、注释、扩展、if else 等。
本文围绕如何在模板中使用if 标记展开。 {% if %} 标记评估一个变量,如果该变量为“”(即存在、不为空且不是假布尔值),则输出块的内容。

句法:

{% if variable %}
// statements
{% else %}
// statements
{% endif %}

例子:

html
{% if athlete_list %}
    Number of athletes: {{ athlete_list|length }}
{% elif athlete_in_locker_room_list %}
    Athletes should be out of the locker room soon!
{% else %}
    No athletes.
{% endif %}


Python3
# import Http Response from django
from django.shortcuts import render
  
# create a function
def geeks_view(request):
    # create a dictionary
    context = {
        "data" : 99,
    }
    # return response
    return render(request, "geeks.html", context)


Python3
from django.urls import path
 
# importing views from views.py
from .views import geeks_view
 
urlpatterns = [
    path('', geeks_view),
]


html
{% if data %}
Value in data is : - {{ data }}
{% else %}
Data is empty
{% endif%}


Python3
## import Http Response from django
from django.shortcuts import render
  
# create a function
def geeks_view(request):
    # create a dictionary
    context = {
        "data" : False,
    }
    # return response
    return render(request, "geeks.html", context)


在上面,如果运动员列表不为空,运动员的数量将由{{运动员列表|长度}}变量显示。
可以看出,if 标记可能带有一个或多个 {% elif %} 子句,以及一个 {% else %} 子句,如果前面的所有条件都失败,则会显示该子句。这些条款是可选的。

if – Django 模板标签说明

使用示例说明如何在 Django 模板中使用 if 标记。考虑一个名为 geeksforgeeks 的项目,它有一个名为 geeks 的应用程序。

现在创建一个视图,我们将通过它传递上下文字典,
在 geeks/views.py 中,

Python3

# import Http Response from django
from django.shortcuts import render
  
# create a function
def geeks_view(request):
    # create a dictionary
    context = {
        "data" : 99,
    }
    # return response
    return render(request, "geeks.html", context)

创建一个 url 路径以映射到此视图。在 geeks/urls.py 中,

Python3

from django.urls import path
 
# importing views from views.py
from .views import geeks_view
 
urlpatterns = [
    path('', geeks_view),
]

在templates/geeks.html中创建一个模板,

html

{% if data %}
Value in data is : - {{ data }}
{% else %}
Data is empty
{% endif%}

让我们检查一下“/”上显示的内容是否显示在模板中。

if-django-模板标签

{% 别的 %}

让我们检查一下 {% else %} 语句是否有效。
现在让我们传递一个空数组并使用空标签和 for 标签。
在 geeks/views.py 中,

Python3

## import Http Response from django
from django.shortcuts import render
  
# create a function
def geeks_view(request):
    # create a dictionary
    context = {
        "data" : False,
    }
    # return response
    return render(request, "geeks.html", context)

现在,检查 http://127.0.0.1:8000/,

空标签 Django 模板标签

高级用法

if 标签可以使用 and,或不测试多个变量或否定给定变量:

{% if athlete_list and coach_list %}
    Both athletes and coaches are available.
{% endif %}

{% if not athlete_list %}
    There are no athletes.
{% endif %}

{% if athlete_list or coach_list %}
    There are some athletes or some coaches.
{% endif %}

{% if not athlete_list or coach_list %}
    There are no athletes or there are some coaches.
{% endif %}

{% if athlete_list and not coach_list %}
    There are some athletes and absolutely no coaches.
{% endif %}