Django自定义模板标签和过滤器
程序员文章站
2022-12-23 13:46:54
1.创建模板库 在某个APP所在目录下新建包 ,然后在其中创建存储标签或者过滤器的的模块,名称随意,例如 。 在这个模块中编写相关代码。 注意: 所在APP应该在配置文件中进行配置。 2.定义过滤器 过滤器是一个函数,第一个参数是被处理的值,之后,可以有任意个参数,作为过滤器参数。 from dja ......
1.创建模板库
在某个app所在目录下新建包templatetags
,然后在其中创建存储标签或者过滤器的的模块,名称随意,例如myfilters.py
。
在这个模块中编写相关代码。
注意:templatetags
所在app应该在配置文件中进行配置。
2.定义过滤器
过滤器是一个函数,第一个参数是被处理的值,之后,可以有任意个参数,作为过滤器参数。
from django import template from django.template.defaultfilters import stringfilter register=template.library() # 去除指定字符串 @register.filter(name='mycut') @stringfilter def mycut(value,arg): return value.replace(arg,'') # 注册过滤器 # register.filter(name='mycut',filter_func=mycut)
3.定义标签
-
simple_tag
处理数据,并返回具体数据
@register.simple_tag(name='posts_count') def total_posts(): return post.published.count()
-
inclusion_tag
处理数据,并返回一个渲染的模板
@register.inclusion_tag('blog/post/latest.html') def show_latest_posts(count=5): latest_posts=post.published.order_by('-publish')[:5] return { 'latest_posts':latest_posts, }
blog/post/latest.html内容如下:
<strong>最新文章</strong> <ul> {% for post in latest_posts %} <li> <a href="{% url 'blog:post_detail' post_id=post.id %}">{{ post.title }}</a> </li> {% endfor %} </ul>
4.使用
使用自定义的标签或过滤器之前,在模板文件中,需要使用 {% load 模块名称 %}
加载自定义的标签和过滤器。
之后,就可以向使用django自带的标签一样使用了。
注意:即使当前模板继承的基模板中已经load了自定义标签或过滤器所在的模块,在当前模板中,依然需要再次load。
上一篇: DI是实现面向切面和面向抽象的前提
下一篇: 搞笑的狮子、老鼠和母鸡
推荐阅读
-
ThinkPHP模板自定义标签使用方法
-
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
-
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
-
Django 笔记(四)模板标签 ~ 自定义过滤器
-
详解Vue-基本标签和自定义控件
-
C#_Excel数据读取与写入_自定义解析封装类_支持设置标题行位置&使用excel表达式收集数据&单元格映射&标题映射&模板文件的参数数据替换(第二版-增加深度读取和更新功能)
-
Flask和Django框架中自定义模型类的表名、父类相关问题分析
-
ThinkPHP自定义函数解决模板标签加减运算的方法
-
django-5-自定义模板过滤器及标签
-
Vue学习之过滤器和自定义指令小结(三)