📜  for ... 空循环 – Django 模板标签

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

for ... 空循环 – Django 模板标签

Django 模板是使用 Django 模板语言标记的文本文档或Python字符串。 Django 是一个强大的包含电池的框架,为在模板中呈现数据提供了便利。 Django 模板不仅允许将数据从视图传递到模板,而且还提供了一些有限的编程功能,例如变量、for 循环、注释、扩展等。
本文围绕如何在模板中使用为空的标签for 标记循环遍历数组中的每个项目,使该项目在上下文变量中可用。 for 标记可以采用可选的 {% empty %} 子句,如果给定数组为空或找不到,则显示其文本。这基本上用作检查查询集是否为空以及在同一场景中执行什么操作的条件。

句法:

{% for i in list %}
// Do this in non - empty condition
{% empty %}
// Do this in empty condition
{% endfor %}

例子:
例如,要显示运动员列表中提供的运动员列表:

html
    {% for athlete in athlete_list %}     
  • {{ athlete.name }}
  • {% empty %}     
  • Sorry, no athletes in this list.
  • {% endfor %}


html
      {% if athlete_list %}     {% for athlete in athlete_list %}       
  • {{ athlete.name }}
  •     {% endfor %}   {% else %}     
  • Sorry, no athletes in this list.
  •   {% endif %}


Python3
# import Http Response from django
from django.shortcuts import render
 
# create a function
def geeks_view(request):
    # create a dictionary
    context = {
        "data" : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    }
    # 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
{% for i in data %}
    
        {{ i }}     
{% endfor %}


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


html
{% for i in data %}
    
        {{ i }}     
    {% empty %}     

There is nothing in this list

{% endfor %}


以上等价于——但比以下内容更短、更简洁、可能更快:

html

      {% if athlete_list %}     {% for athlete in athlete_list %}       
  • {{ athlete.name }}
  •     {% endfor %}   {% else %}     
  • Sorry, no athletes in this list.
  •   {% endif %}

for … empty – Django 模板标签说明

使用示例说明如何在 Django 模板中使用 for …empty 标签。考虑一个名为 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" : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    }
    # 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

{% for i in data %}
    
        {{ i }}     
{% endfor %}

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

循环 django 模板标签

包含在 for 标记之间的任何内容都将重复,循环运行的次数。
现在让我们传递一个空数组并使用空标签和 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" : [],
    }
    # return response
    return render(request, "geeks.html", context)

现在在模板/geeks.html 中,

html

{% for i in data %}
    
        {{ i }}     
    {% empty %}     

There is nothing in this list

{% endfor %}

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

for-empty-django-template-tags