模板标签之if、for

本文介绍了DTL中的if、for...in...和for...in...empty标签。if标签类似Python的if语句,可用多种判断运算符;for...in...可遍历多种对象,还能反向遍历,遍历字典有不同形式,循环中有一些可用变量;for...in...empty标签在遍历对象无元素时执行特定内容。

if标签

if标签相当于Python中的if语句,有elif和else相对应,但是所有的标签
都需要用标签符号({%%})进行包裹。if标签中可以使用 ==、!=、<、<=、>、>=、in、notin、is、is not等判断运算符。

{% if "张三" in persons %}
    <p>张三</p>
{% else %}
    <p>李四</p>
{% endif %}

for...in... 标签

for...in...类似于Python中的 for...in... 可以遍历列表、元组、字符串、字典等一切可以遍历的对象。

  • views.py示例

      def jiajia(request):
          context = {
              'books': [
                  '三国演义',
                  '水浒传',
                  '红楼梦',
                  '西游记',
              ]
          }
      return render(request, 'index.html', context=context)
  • urls示例

      from django.urls import path
      from . import views
      urlpatterns = [
          path('index2/', views.jiajia),
      ]
  • html示例

      <ul>
          {% for book in books %}
              <p>{{ book }}</p>
          {% endfor %}
      </ul>
  • 效果:

1632913-20190319120301162-43158851.png

如果想要反向遍历,那么在遍历的时候就加上一个 reversed

  • 反向遍历示例代码

      <ul>
          {% for book in books reversed %}
              <li>{{book}}</li>
          {% endfor %}
      </ul>

遍历字典的形式:

  • views示例代码:

      context = {
          'person': {
              'uername': 'jiajia',
              'age': 18,
              'height': 180
          }
      }
  • html示例代码

      <ul>
          {% for key in person.keys %}
                      <li>{{ key }}</li>
          {% endfor %}
      </ul>

这样就是把person内的所有key打印出来,同理修改person.values即可得到所有的values。items亦是如此。

  • items示例代码

       <ul>
          {% for key,value in person.items%}
                      <li>{{key}}:{{value}}</li>
          {% endfor %}
      </ul>

在for循环中, DTL提供了一些变量可供使用。

  • forloop.counter:当前循环的下标。以1作为起始值。
  • forloop.counter0:当前循环的下标。以0作为起始值。
  • forloop.revcounter:当前循环的反向下标值。比如列表有5个元素,那么第一次遍历这个属性是等于5,第二次是4,以此类推。并且是以1作为最后一个元素的下标。
  • forloop.revcounter0:类似于forloop.revcounter。不同的是最后一个元素的下标是从0开始。
  • forloop.first:是否是第一次遍历。
  • forloop.last:是否是最后一次遍历。

for...in...empty标签:

这个标签使用跟 for...in...是一样的,只不过是在遍历的对象如果没有元素的情况下,会执行empty中的内容。

  • 示例代码:

      {% for comment in comments %}
          <li>{{ comment }}</li>
      {% empty %}
          没有任何评论
      {% endfor %}

转载于:https://www.cnblogs.com/jiajiaba/p/10557770.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值