六.自定义模板过滤器及标签
Ⅰ.
自定义模板过滤器,首先考虑:将代码写在什么地方(参见代码布局)
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





关于上下文的引用





浙公网安备 33010602011771号