在哪里定义,要将代码写在什么地方?
代码布局:(死去活来)
- app目录下的名为'templatetags'的文件夹,必需叫用它。这个文件夹必需是一个Python的包。这个文件夹下一定有一个'__int__.py'的文件
- 自定义的模板标签,或模板过滤器就放在这个包下的Python模块中(.py文件)。
- app必需在setting中被注册
一、自定义模板过滤器
定义
自定义过滤器就是一个Python的函数。它有一个或两个参数。
第一个参数就是那个传进来的模板变量(可以是任意的数据类型)
第二个参数是一个普通的参数,可以是默认参数。也可以不要这个参数。
注册


效果:

在模板中使用
1、load标签,引入自定义的模块,也就是templatetags包里的那个python文件
{%load teacher_filters%}
<td>{{ student.sex|my_male }}</td>
注意:新建了templatetags文件夹,要重启一下django服务。
两个参数

命名


二、自定义模板标签
干任何事情
标签类型
1、简单标签
'''django.template.Library.simple_tag()'''
接收许多参数
创建和注册

使用效果如下:

其实,模板标签就是一个函数。
{% current format_str %} #跟普通的函数传参数一样,字符串,模板变量,关键字参数
使用上下文变量:

在自定义标签中,使用当前模板中的上下文变量context
2.包含标签
通过渲染另外一个模板展示数据。
定义:


效果图:

包含标签:



浙公网安备 33010602011771号