1.自定义模板过滤器
代码布局
a. app目录下的名为 templatetags 的文件夹,名字是规定好的.这个文件夹必须是一个Python的包,这个文件下一定有一个__init__.py的文件
b.自定义的模板标签,或模板过滤器就放在这个包下的python模块中(python的脚本文件)
c.app必须在settings中被注册
定义和布局
a.自定义过滤器就是一个python函数,它有一个或两个参数.
b.第二个参数 是一个普通参数,可以是默认参数,也可以不要这个参数
第一个模板过滤器
注册
from django.template import Library
register = Library() # 必须用register这个变量名
def my_male(value):
"""
转换性别的过滤器
:param value:
:return:
"""
map = {
'0': '女',
'1': '男'
}
return map[value]
# 注册
register.filter(my_male)
在模板中使用
load标签,引入自定义的过滤器模块,也就是templatetags包里的那个python文件
{% load teacher_filters %}
......
<td>{{ student.sex|my_male }}</td>
注意: 新建了templatetags文件夹要重启一下Django服务
效果图
2.自定义模板标签
标签类型
1.简单标签
django.template.Libray.simple_tag()
接受许多参数
a.创建和注册
在模板引用
效果图
模板标签就是一个函数
<p>当前时间: {% current %}</p> # 跟普通函数的传参一样, 字符串, 模板变量, 关键字传参<p>当前时间: {% current format_str %}</p> # 这里的format_str是一个模板变量<p>当前时间: {% current format_str='%Y-%m-%d' %}<p>当前时间: {% current '%Y-%m-%d' %}</p>一样可以出现效果
b.使用上下文管理
在自定义标签中,使用当前模板中的上下文变量context
2.包含标签
通过渲染另外一个模板来展示数据.
a.定义
# 导入模块
from django.template.loader import get_template# 注册 @register.inclusion_tag('teacher/show_list.html') def show_list(list_data): # 是一个嵌套抱歉,首先展示列表数据 return {'ls': list_data} # 注册 # t = get_template('teacher/show_list.html') ==(等同与) @register.inclusion_tag('teacher/show_list.html') # register.inclusion_tag(t)(show_list) # 需要一个模板变量
效果图