前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django自定义模板标签和过滤器

Django自定义模板标签和过滤器

作者头像
py3study
发布2020-01-16 00:30:20
6940
发布2020-01-16 00:30:20
举报
文章被收录于专栏:python3python3

1.创建模板库

在某个APP所在目录下新建包templatetags,然后在其中创建存储标签或者过滤器的的模块,名称随意,例如myfilters.py

在这个模块中编写相关代码。

注意:templatetags所在APP应该在配置文件中进行配置。

2.定义过滤器

过滤器是一个函数,第一个参数是被处理的值,之后,可以有任意个参数,作为过滤器参数。

代码语言:javascript
复制
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。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.创建模板库
  • 2.定义过滤器
  • 3.定义标签
  • 4.使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档