六.自定义模板过滤器及标签

Ⅰ.自定义模板过滤器代码写在哪里? 

      自定义模板过滤器,首先考虑:将代码写在什么地方(参见代码布局)

1.代码布局(死记硬背)

1) 前提条件
  • 放在app目录下的名为templatetags 的文件夹,必须叫这个名字(不能更改,否则 django 就找不到)。这个文件夹必须是一个python的包,这个文件夹下一定有一个__init__.py的文件

  • 自定义的目标标签,或模板过滤器就放在这个包下的python模块中(python脚本文件)

  • app必须在settings中被注册

 

 

 

 

Ⅱ.自定义模板过滤器

 1.定义

1) 含义
  • 自定义过滤器就是一个python函数,它只能有1个或2个参数。该函数具有以下特点:

    • 第一个参数 就是那个传进来的模板变量(模板变量可以是任意的数据类型)。

    • 如果有第二个参数,则第二个参数是一个普通参数,可以是默认参数,也可以不要这个参数

 

 

2) 如何写

 

 

 

2.注册

 

 

3.在模板中使用

    *load标签,引入自定义的过滤器模块,也就是templatetags包里的那个python文件

 

4.升级(当有两个参数时)

 

5.过滤器的命名

 

 

Ⅲ.自定义模板标签

 

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标签进行(时/分/秒)的整改

 

 

 

d.使用上下文变量

      在自定义标签中,使用视图中的所有context(即当前模板中的上下文变量context),这里的视图一定是调用那个标签的视图

 

 

 

2) 包含标签(嵌套标签)

    通过渲染另外一个模板来展示数据。

a.定义
1.引入hobby这个例子

                  注意:现在是引入一个hobby,当引入多个时,就显得繁琐不易实现,所以就触发了包含标签的使用

 

 

b.包含标签的使用(该方法可以实现a中的效果,且更简便)

 

c.包含标签的使用——案例2

 

 

        关于上下文的引用

 

posted @ 2019-03-26 16:50  Michael_1224  阅读(78)  评论(0编辑  收藏  举报