一、关于自定义
自定义的引入
内置函数--------->自定义函数
内置模块--------->自定义模板
内置过滤器------>自定义过滤器
内置标签--------->自定义标签
二、文件路径配置
templates 存放模板的目录
templatetags 存放自定义标签及过滤器的目录
1. 在项目目录下创建个名为common的Python包
2. 将common加入到settings文件中的INSTALLED_APP列表中
3. 在common里面创建目录templatetags,在目录里面创建自定义过滤器及标签文件
注意:templatetags这个目录名字是固定的,而里面的模块是自定义的。
三、自定义过滤器
自定义过滤器就是一个带有一个或者两个参数的python函数:
1、 (输入的)变量的值----不一定是字符串形式。
2、 参数的值----可以有一个初始值,或者完全不要这个参数。
{{ var|foo:"bar"}}
‘var‘:变量;'foo:':过滤器;‘bar’:参数。
例子:
common_extras.py文件中自定义cut和lower的过滤器功能
def mycut(value, arg): return value.replace(arg, '') def mylower(value): return value.lower()
注册自定义过滤器
在自定义过滤器后需要进行注册,其方法如下:
django.template.Library.filter()
1. Library.filter()方法需要两个参数:
a. 过滤器的名称(一个字符串对象)
b. 编译的函数------一个Python函数(不要把函数名写成字符串)
2. 可以把register.filter()用作装饰器;
3. 没有声明name参数,Django将使用函数名作为过滤器的名字。
使用自定义过滤器
在模板中使用自定义的过滤器,需要使用{% load %}标签将我们自定义模块加载进来{% load %}声明将会载入给定模块名中的标签/过滤器
四、自定义标签
简单标签django.template.Library.simple_tag()
包含标签django.template.Library.inclusion_tag()
tag()方法有两个参数:
1、模板标记的名称---字符串。如果省略,将使用编译函数的名称。
2、编译的函数---一个Python函数(不要把函数名携程字符串)与过滤器注册一样,也可以将其用作装饰器。
自定义简单标签的例子:
1. 定义一个显示当前时间的简单标签,需要传入时间格式
2. 注册标签时,使用takes_context参数,则可以使用从上下文传入的参数
3. 模板中使用自定义的标签
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix