欢迎光临散文网 会员登陆 & 注册

Pycharm开发Django的自定义模版过滤器

2021-10-05 11:07 作者:app毒  | 我要投稿

自定义模版过滤器

虽然DTL给我们内置了许多好用的过滤器。但是有些时候还是不能满足我们的需求。因此Django给我们提供了一个接口,可以让我们自定义过滤器,实现自己的需求。


模版过滤器必须要放在APP中,并且这个APP必须要在INSTALLED_APPS中进行安装。然后再在这个APP下面创建一个Python包叫做templatetags。再在这个包下面创建一个python文件。比如APP的名字叫做book,那么项目结构如下:


- book

    - views.py

    - urls.py

    - models.py

    - templatetags

        - my_filter.py

在创建了存储过滤器的文件后,接下来就是在这个文件中写过滤器了。过滤器实际上就是python中的一个函数,只不过是把这个函数注册到模板库中,以后在模板中就可以使用这个函数了。但是这个函数的参数有限制,第一个参数必须是这个过滤器需要处理的值,第二个参数可有可无,如果有,那么就意味着在模板中可以传递参数。并且过滤器的函数最多只能有两个参数。在写完过滤器后,再使用django.template.Library对象注册进去。示例代码如下:


from django import template


# 创建模板库对象

register = template.Library()


# 过滤器函数

def mycut(value,mystr):

    return value.replace(mystr)


# 将函数注册到模板库中

register.filter("mycut",mycut)

以后想要在模板中使用这个过滤器,就要在模板中load一下这个过滤器所在的模块的名字(也就是这个python文件的名字)。示例代码如下:


{% load my_filter %}

自定义时间计算过滤器:

有时候经常会在朋友圈、微博中可以看到一条信息发表的时间,并不是具体的时间,而是距离现在多久。比如刚刚,1分钟前等。这个功能DTL是没有内置这样的过滤器的,因此我们可以自定义一个这样的过滤器。示例代码如下:


# time_filter.py文件


from datetime import datetime

from django import template


registe

Pycharm开发Django的自定义模版过滤器的评论 (共 条)

分享到微博请遵守国家法律