1.常用的模板标签
-作用是什么?提供各种逻辑 -模板标签格式 大括号 百分号 语句 百分号 大括号,还要有结尾也是大括号 百分号 end语句 百分号 大括号 比如 {% for item in items %} item.元素1 item.元素2 item.元素3 ....... {% endfor %} 其中items可以是视图函数传过来的参数里的模板变量,模板标签里可以通过循环取得它里边的元素,依次把这些元素进行渲染,去执行模板标签和模板结尾标签之间定义的操作,循环直到取完items里边的元素为止{% for stu in students %} { {forloop.counter}} { {stu.name}} { {stu.age}} { {stu.sex}} {% endfor %}
-常用标签 for、 if、
(1)其中if语句的关系运算符==,<,>,<=,>= 运算符前后必须有空格,可以 {% if a== 'aaa' %} 此情况下执行某某语句 {% elif a>'aaa' %} 此情况下执行某某语句 {% else %} {% endif %} (2)url标签是单标签不用有endurl {% url 空格'app:视图函数'空格 需要传的参数1 空格 参数2 %},url模板标签也可以动态解析url, 注意:'app:视图函数'前后不要加'/',需要提前在urls.py中为app命名,以及给相应视图函数的path起名name='某某某名字' (3)with {% with s2 = students.2%} {% endwith %} (4)循环的模板标签里想取得序号,可以使用{ {forloop.counter}},forloop可以获取当前for循环的迭代次数,.counter是下标以1开始,.counter0是下标从0开始 想让循环迭代次数从大到小排是.revcounter,以1结束,.revcounter0是以0结束 总结:本质还是字符串格式化,语法 : {% tag %} {% endtag %} {% tag 参数 参数 %} 注意在模板标签的{}里用到的模板变量不用再加双层花括号了,变量名就能用,在模板标签和模板结尾标签之间的语句里模板变量要用双层花括号 2.模板的继承与引用 (include 和extends也是模板标签) -引用 include标签 {% include 路径 %}可以把别的模板渲染完后的内容放到其他模板里你想放的位置,include标签是单独的标签,没有结尾标签,可以用于插入广告模板页面等,他的参数就是其他想引用的模板页面的路径 -继承 extends标签 解决前端代码冗余 (1)步骤:1)新建base模板,把所有模板最基本的共同内容写到base里,把其他模板需要更改的部分都去掉 2)在需要继承base模板的我们定义的模板,最上面写extends标签{% extends 'app名/base.html' %},extends标签必须在模板文本最上面,注意标签里百分号后,extends后,路径后 都要有空格 继承的父模板外用引号括起来 3) 某个模板文本最上写上extends标签后,就代表它继承base父模板,它自己本身的内容就都不起作用了,只会显示继承自父模板的内容,去返回父模板所渲染的东西{% block title %}base模板{% endblock %} {% block link %} 这里引入你自己想用的css文件吧... {% endblock %}{% block c1 %}abcdefgh....
{% endblock %}
上面这些是父模板中的代码
{% extends 'teacher/base.html' %}{% block link %} {% load static %} {% endblock %}{% block title %}loginteacher{% endblock %}{% block c1 %}{% endblock %}
这是自定义的模板中的代码
(2) block标签 :base模板好比字符串中占位符,预留出来给继承它的模板显示自己的内容 注意,block标签是写父模板文本base.html中的时候,是留坑留给继承它的模板页面的, block标签写在自定义的有个性内容的模板文本中的时候,可以填坑去定义本模板自定义的个性内容 本质还是字符串格式化,占位坑想挖几个挖几个,想挖哪里挖哪里 语法 1)父模板中,想留空的位置{% block 随便起个名字 %} 。。。。{% endblok %} block标签也是闭合标签,要有结束标签,起的名字不要加引号扩起来 父模板中可以插入多个不同命名的block标签和它自己的结尾block标签 block标签还能写到html页面标签当中,比如<title>{% block title %}base模板{% endblock %}</title> 2)继承父模板的自定义模板中,想自定义东西的位置写成对的block标签和结尾block标签名字要和副模版中对应的block标签名字相同,比如头部block标签里定义css样式,body里定义自定义显示的内容 {% block 和父模板中对应的block标签一样的名字 %} 任何自定义内容 {% endblock %} 如果副模版的block标签写在html标签中,自定义模板文本对应名字的block标签直接写html标签里的内容就可以了,外面的html标签都继承过来了 多个自定义模板可以继承同一个父模板,可以像python里的类一样多次继承,我们可以继承一个父模板,它继承了别的父模板 3)技巧:父模板和自定义模板尽可能多挖坑, 常见的挖的坑都有:(1)定义一个页面底部的block标签{% block domready %}{% endblock %}用来留给自定义模板放js代码的地方 (2)页面上部定义的放css的坑 (3)页面上部定义的放script代码的坑