37.Python自定义过滤器

自定义模板过滤器

1.首先在某个app中,创建一个python包,叫做“templatetags”,注意,这个包的名字一定要是“templatetags”,否者的话,就会找不到定义的过滤器。
2.在创建的tamplatetags包下面,创建一个python文件,用来存储过滤器。
3.在新建的python文件中,定义过滤器(也就是函数),这个函数的第一个参数一定是被过滤的那个参数,并且如果在使用过滤器的时候要从视图函数中传递一个参数的话,就可以在过滤器中再定义一个参数,但是注意,过滤器函数最多只能有两个参数。
4.在写完过滤器函数之后,一定要把过滤器进行注册,不注册,不会进行执行定义的过滤器函数的。首先要使用django.template.Library.filter进行注册。
5.还要把这个过滤器所在的这个app添加到“settings.py”中的INSTALLD_APPS中,否者的话,就找不到这个app。
6.在模板中使用“load”标签进行加载过滤器所在的python包。
7.之后就可以进行传递参数,使用过滤器了。

示例代码如下:

views.py中代码如下:
from django.shortcuts import render


def index(request):
    context = {
        'value':'Hello'
    }
    return render(request,'index.html',context=context)
在urls.py中进行视图与url的映射:
from django.urls import path
from article import views

urlpatterns = [
    path('',views.index, name = 'index'),
]
自定义的过滤器所在文件:my_fliter.py
from django import template


# 定义一个类
register = template.Library()


# 设置默认值,如果不从视图函数中船机来参数值的话,就为默认值None
def greet(value,word=None):
    return value + word


# filter()函数中第一个参数为:过滤器的名字,第二个参数为函数的名称
register.filter("greet",greet)
在DTL模板index.html中进行使用自定义的过滤器:
{#  如果想要使用自定义的过滤器的话,就必须要先导入 ,导入的名称为自定义过滤器所处的文件名 #}
{#  必须要把app安装到settings.pyw文件中  #}
{% load my_fliter %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ value|greet:'小蚂蚁' }}
</body>
</html>
运行结果如图所示:

在这里插入图片描述

猜你喜欢

转载自www.cnblogs.com/guyan-2020/p/12203641.html