码迷,mamicode.com
首页 > 编程语言 > 详细

37.Python自定义过滤器

时间:2020-01-17 00:17:32      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:reg   自定义   就会   ESS   注册   djang   必须   path   lld   

自定义模板过滤器

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>
运行结果如图所示:

技术图片

37.Python自定义过滤器

标签:reg   自定义   就会   ESS   注册   djang   必须   path   lld   

原文地址:https://www.cnblogs.com/guyan-2020/p/12203641.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!