模板标签及模板的继承与引用
模板标签
- 标签在渲染的过程中提供任意的逻辑
- 都是{% ... %}的形式
一些常用的标签:
使用方法,例如:
<tbody>
{% for student in students %}
<tr {% if student.sex == '女' %}style="background-color: pink"{% endif %}>
{# 如果是女的,渲染为pink#}
<td>{{ forloop.counter }}</td>
{# 按序,正序,默认从1开始,forloop.counter0,表示从0开始;使用revcounter表示倒序#}
<td>{{ student.name }}</td>
<td>{{ student.age }}</td>
<td>{{ student.sex }}</td>
</tr>
{% endfor %}
</tbody>
url模板标签
{% url '地址' 参数 %}
例如:
#urls
path('student/<int:pk>',views.student_detail_view,name ='student_detail')
#HTML
<td><a href="{% url 'teacher:student_detail' student.id %}" >{{ student.id }}</a></td>
即是:将url里面的地址解析出来,获取path的路径,student.id对应PK参数,后跳转到视图student_detail_view,执行视图内容.
模板继承
标签:
- {% extends '被继承文件路径' %},继承文件
- {% block ... %}{% endblock %},修改继承文件的内容
模板继承使用extends标签实现。通过使用block来给子模板开放接口。
- extends必须是模板中的第一个出现的标签。
- 子模板中的所有内容,必须出现在父模板定义好的block中,否则django将不会渲染。
- 如果出现重复代码,就应该考虑使用模板。
- 尽可能多的定义block,方便子模板实现更细的需求。
- 如果在某个block中,要使用父模板的内容,使用block.super获取。
模板引用
{% include '被引用的文件路径'%}
- 引用常用于某一网页相同模块,常见的例子就是广告