Django基础篇(二)

Template基础

------------模板语法---------------

逻辑控制代码的组成

1标签(tag)的使用(使用大括号和百分比的组合来表示使用tag)

{% tags%}

------{% if %} 的使用

 {% if %}标签计算一个变量值,如果是“true”,即它存在、不为空并且不是false的boolean值,系统则会显示{% if %}和{% endif %}间的所有内容

{% if num >= 100 and 8 %}

    {% if num > 200 %}
        <p>num大于200</p>
    {% else %}
        <p>num大于100小于200</p>
    {% endif %}

{% elif num < 100%}
    <p>num小于100</p>

{% else %}
    <p>num等于100</p>

{% endif %}



{% if %} 标签接受and,or或者not来测试多个变量值或者否定一个给定的变量
{% if %} 标签不允许同一标签里同时出现and和or,否则逻辑容易产生歧义,例如下面的标签是不合法的:

{% if obj1 and obj2 or obj3 %}

------{% for %}的使用

{% for %}标签允许你按顺序遍历一个序列中的各个元素,每次循环模板系统都会渲染{% for %}和{% endfor %}之间的所有内容

 1 {% for name in name_list %}
 2     <li>{{ name }}</li>
 3 {% endfor %}
 4 
 5 
 6 #在标签里添加reversed来反序循环列表:
 7 {% for name in name_list reversed%}
 8     <li>{{ name }}</li>
 9 {% endfor %}
10 
11 
12 #{% for %}标签可以嵌套:
13 {% for name in name_list %}
14     <h1>{{ name }}</h1>
15     <ul>
16     {% for i in li %}
17         <p>{{ i }}</p>
18     {% endfor %}
19      </ul>
20 {% endfor %}
#系统不支持中断循环,系统也不支持continue语句,{% for %}标签内置了一个forloop模板变量,
#这个变量含有一些属性可以提供给你一些关于循环的信息

1,forloop.counter表示循环的次数,它从1开始计数,第一次循环设为1:
{% for name in name_list %}
<h1>{{ name }}</h1>
<ul>
{% for i in li %}
<p>{{ i }}</p>
{% endfor %}
</ul>
{% endfor %}


{% for name in name_list reversed%}
<li>{{ forloop.counter }}{{ name }}</li>
{% endfor %}

{% for name in name_list reversed%}
<li>{{ forloop.revcounter }}{{ name }}</li>
{% endfor %}
2,forloop.counter0 类似于forloop.counter,但它是从0开始计数,第一次循环设为0
3,forloop.revcounter
4,forloop.revcounter0
5,forloop.first当第一次循环时值为True,在特别情况下很有用:
 {% for object in objects %}   
         {% if forloop.first %}<li class="first">{% else %}<li>{% endif %}   
         {{ object }}   
        </li>  
    {% endfor %}  
    
# 富有魔力的forloop变量只能在循环中得到,当模板解析器到达{% endfor %}时forloop就消失了
# 如果你的模板context已经包含一个叫forloop的变量,Django会用{% for %}标签替代它
# Django会在for标签的块中覆盖你定义的forloop变量的值
# 在其他非循环的地方,你的forloop变量仍然可用


#{% empty %}

{{li }}
      {%  for i in li %}
          <li>{{ forloop.counter0 }}----{{ i }}</li>
      {% empty %}. #如果改列表为空,就执行该代码块的内容
          <li>this is empty!</li>
      {% endfor %}

#         [11, 22, 33, 44, 55]
#            0----11
#            1----22
#            2----33
#            3----44
#            4----55

 

原文地址:https://www.cnblogs.com/YingLai/p/6482946.html