Django学习之模板层之自定义标签和过滤器
1>自定义标签和过滤器
当django自带的一些标签不能满足我们项目的开发需求的时候,就需要自定标签或者过滤器了
自定义标签步骤如下,
过滤器和标签的引用
从上可以看出,自定义标签和过滤器整个流程基本一样,除了自定义函数调取的装饰器不一样,其他都一样。
还有一点要注意,filter最多只能传入两个参数,如上,a1是一个,函数冒号后面是一个,
标签则可以多个,看传参方式也能看出来,参数1[空格]参数2[空格]参数3[空格]参数4。。。
但是,filter可以用在if等逻辑语句中,但是标签不可以,例子如下
2>模板继承
模版继承可以让您创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 blocks
从名字也可以看出来,这提升代码复用性的功能,就是一些网页的框架可以写到一个单独的html文件,
然后里面留下可扩展/需要重新编写的“区域块”,再编写新的HTML内容时,先引入这个框架,再基于框架
完善之前的“区域块”。
模板继承两个重要的语法,一个 include,一个extends。
include主要是引入内容,类似模板复用功能,例子如下:
现在单独写入一个文件,用include引入,如下:
extends功能比include更强大些,它可以模板继承(框架视角),预留自定义的区域块,非常灵活
接下来,补充下之前预留的区域块
说一说 {{ block.super}}
如上,当预留的区域块{%block %}里面有内容时,写入新的会覆盖旧的记录,当我想保留这些模板数据的时候
应该怎么办呢? 这个时候,就引入{{block.super}}来解决这个问题。
其他一些注意的点:
在模版中使用 {% extends %}
标签,它必须是模版中的第一个标签