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