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

浙公网安备 33010602011771号