六.自定义模板过滤器及标签
Ⅰ.
自定义模板过滤器,首先考虑:将代码写在什么地方(参见代码布局)
1) 前提条件
-
放在app目录下的名为
templatetags
的文件夹,必须叫这个名字(不能更改,否则 django 就找不到)。这个文件夹必须是一个python的包,这个文件夹下一定有一个__init__.py
的文件 -
自定义的目标标签,或模板过滤器就放在这个包下的python模块中(python脚本文件)
-
app必须在settings中被注册
Ⅱ.自定义模板过滤器
1.定义
1) 含义
-
自定义过滤器就是一个python函数,它只能有1个或2个参数。该函数具有以下特点:
-
第一个参数 就是那个传进来的模板变量(模板变量可以是任意的数据类型)。
-
如果有第二个参数,则第二个参数是一个普通参数,可以是默认参数,也可以不要这个参数
-
2) 如何写
load标签,引入自定义的过滤器模块,也就是templatetags包里的那个python文件
Ⅲ.自定义模板标签
1.标签类型
1) 简单标签
注:简单标签和过滤器之间没有太大区别
a.简单标签由该实例进行注册
django.template.Libray.simple_tag()
-
接收许多参数(可以是字符串/模板变量)
b.创建&注册
1.与自定义模板过滤器类似其代码布局在同个地方: templatetags
的package中
2.方法上的不同
c.应用
1.传入当前所有时间
2.只传入年/月/日(时/分/秒) 【两种方法】
1) 只在student_list_page.html下的p标签进行(年/月/日)的整改
2) views.py下的p标签进行(时/分/秒)的整改
在自定义标签中,使用视图中的所有context
(即当前模板中的上下文变量context
),这里的视图一定是调用那个标签的视图
2) 包含标签(嵌套标签)
通过渲染另外一个模板来展示数据。
a.定义
1.引入hobby这个例子
注意:现在是引入一个hobby,当引入多个时,就显得繁琐不易实现,所以就触发了包含标签的使用
b.包含标签的使用(该方法可以实现a中的效果,且更简便)
c.包含标签的使用——案例2
关于上下文的引用