模板标签
在传递数据的时候,会有大量的数据展示在浏览器上,而数据会是动态变化的,在html的编写中,数据也是需要动态的,而不能是写死的,如果动态展示呢。
给定的例子数据
views传递数据给html
1 from django.shortcuts importrender2
3 defindex(request):4
5 students =[6 {'id':12, 'name':'张三', 'age':19, 'sex':'男'}7 {'id':22, 'name':'李思', 'age':19, 'sex':'女'}8 {'id':25, 'name':'王五', 'age':19, 'sex':'男'}9 {'id':43, 'name':'赵柳', 'age':19, 'sex':'女'}10 {'id':88, 'name':'孙奇', 'age':19, 'sex':'男'}11 ]12
13 return render(request,'teacher/index.html',context={14 'students':students,15 })
for循环标签
1
2
3
4
序列5
姓名6
年龄7
性别8
9
10
11 {% for stu in students %}12
13
14
{{ stu.id}}15
{{ stu.name }}16
{{ stu.age }}17
{{ stu.sex }}18
19
20 {% endfor %}21
22
输出的结果为: css样式有过调整,请忽略样式
forloop:序号排列
1
2
3
4
从1开始的正向排序5
从0开始的正向排序6
以1结尾的倒序7
以0结尾的倒序8
9 {% for stu in students %}10
11
12
{{ forloop.counter}}13
{{ forloop.counter0 }}14
{{ forloop.revcounter }}15
{{ forloop.revcounter0 }}16
17 {% endfor %}18
19
输出的结果为:
if:if判断
1
2
3
4
从1开始的正向排序5
从0开始的正向排序6
以1结尾的倒序7
以0结尾的倒序8
9 {% for stu in students %}10
11
12 == 两头需要空格13
14
{{ forloop.counter}}15
{{ stu.name }}16
{{ stu.age }}17
{{ stu.sex }}18
19 {% endfor %}20
21
输出结果为:
简单获取url
views简单配置点击id所展示的页面
1 defst_id(request, pk):2 return HttpResponse('学生ID为%s的详情页' % pk)
对序号设置点击的跳转url
1
2
3
4
从1开始的正向排序5
从0开始的正向排序6
以1结尾的倒序7
以0结尾的倒序8
9 {% for stu in students %}10
11
12
13
{{ forloop.counter}}14
{{ stu.name }}15
{{ stu.age }}16
{{ stu.sex }}17
18 {% endfor %}19
20
输出结果:
点击序列为1的网址显示:
url标签:动态获取url,返回一个命名(views中path里面的name的值)了的URL的绝对路径
1
2
3
4
从1开始的正向排序5
从0开始的正向排序6
以1结尾的倒序7
以0结尾的倒序8
9 {% for stu in students %}10
11
12 通过url标签,动态生成对应的url网址,此处的'teacher:st_id'13 **需要在views中配置其中的path的name,name和此处的value需要一一对应。**14
{{ forloop.counter}}15
{{ stu.name }}16
{{ stu.age }}17
{{ stu.sex }}18
19 {% endfor %}20
21
for in empty 判断空置渲染默认的
1 {% for i in stu%}2
3 {% empty %}4
5
6 {% emdfor %}
with:类似于as
第一种写法:
1 {% with stu=students.2%}2 stu就可以拿出来使用了3 {% endwith %}
第二种写法
1 {% with test_name as tn %}2 1111{{ tn }}3 2222{{ tn }}4 {% endwith %}
autoescape 转义开关 同过滤器的safe
1 {% autoescape off %}2 {{ html }}3 {% endautoescape %}
模板的引入
include 模板的引入,把写好的html模板添加到我们需要的html中,在html代码中添加
1
2 {% include 'teacher/ad.html' %}3
输出结果
模板的继承
extends继承标签:extends代买写在html的最上面,首行,在此行下面的代码无效。
被引入的内容写在block中
1
2 {% extends 'teacher/base.html'%}
block自定义标签:在模板html中挖坑
base模板文件.html
1 默认写css的坑2 {% block link%}3 {% endblock %}4
5
6 {% block conrent(自定义名称) %}7
8
9
模板内的数据
10 {% endblock %}11
12
13 {% block domready %}14 {% endblock %}
被引入的html文件,css,js,html代码都是此种方法写入。对应上面的模板
1 {% extends 'teacher/base.html'%}2 {% load static %}3
4 {% block link %}5 带入css代码6
7 {% endblock %}8
9 {% block conrent %}10
我是被展示的数据
11 {% endblock %}12
13 {% block domready %}14
15 {% endblock %}
总结:
模板标签语法:
1 {% tag %} {% endtag %} 需要结束收尾的2
3 {% tag 参数 参数 %} 例如 url