自定义模板过滤器

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自定义过滤器的更多相关文章

  1. python 自定义过滤器

    文件目录结构: 新建文件并且命名为“templatetags” , 然后复制 __init__.py文件,拷贝到templatetags文件夹里, __pycache__文件夹可以忽略哈,那是程序运行 ...

  2. python测试开发django-70.自定义过滤器filter

    前言 django的模板有很多内置的过滤器,可以满足一些常见的需求,如果有些需求内置过滤器无法满足,那么我们需要自己写一些过滤器了. 自定义过滤器 先在app下新建一个 templatetags 目录 ...

  3. Python - Django - 模板语言之自定义过滤器

    自定义过滤器的文件: 在 app01 下新建一个 templatetags 的文件夹,然后创建 myfilter.py 文件 这个 templatetags 名字是固定的,myfilter 是自己起的 ...

  4. 38.Python自定义计算时间过滤器

    在写自定义的过滤器时,因为django.template.Library.filter()本身可以作为一个装饰器,所以可以使用: register = django.template.Library( ...

  5. lucene自定义过滤器

    先介绍下查询与过滤的区别和联系,其实查询(各种Query)和过滤(各种Filter)之间非常相似,可以这样说只要用Query能完成的事,用过滤也都可以完成,它们之间可以相互转换,最大的区别就是使用过滤 ...

  6. 自定义模板语言之simple_tag和自定义过滤器

    扩展你的模板系统 一般是扩展模板的tag和filter两个功能.可以用来创建你自己的tag和filter功能库. 创建模板库 分为两步: 1. 首先决定由模板库在哪一个注册的app下放置,你可以放在一 ...

  7. Django中自定义过滤器的使用

    我在这里做的是: 从数据库查出id递增的一些信息,展示在前台. 编写一个过滤器判断查出数据的id是偶数的返回True 奇数返回False 1 创建项目,创建应用,注册应用,配置settings.py文 ...

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

    前提:自定义模板标签和过滤器必须位于Django的某个应用中,这个应用可以包含一个templatetags目录, 和models.py views.py 处于同一级目录.若这个templatetags ...

  9. 一、变量.二、过滤器(filter).三、标签(tag).四、条件分支tag.五、迭代器tag.六、自定义过滤器与标签.七、全系统过滤器(了解)

    一.变量 ''' 1.视图函数可以通过两种方式将变量传递给模板页面 -- render(request, 'test_page.html', {'变量key1': '变量值1', ..., '变量ke ...

随机推荐

  1. spring源码系列(一):使用Gradle构建spring5源码的一些坑和步骤

    源代码github:  https://github.com/spring-projects/spring-framework.git 一 修改项目配置文件中gradle版本和地址 替换成本地安装的版 ...

  2. C++使用类调用CUDA核函数

    正如CUDA C所称,CUDA对C语言进行了很好的扩展,直接使用C语言可以非常简单方便的调用CUDA核函数.但是当想使用C++的类成员函数直接调用核函数是不可行的,第一,核函数不能作为类的成员函数,第 ...

  3. vim 实用快捷键

    删除当前行:dd 删除上一行:dj 删除下一行:dk 拷贝当前行:yy 交换当前行和其下一行 交换当前字符和其后的一个字符 剪切当前字符:x 剪切当前光标开始向后三个字符:3x 撤销最近一次修改:u ...

  4. 【转载】计算机程序的思维逻辑 (8) - char的真正含义

    看似简单的char 通过前两节,我们应该对字符和文本的编码和乱码有了一个清晰的认识,但前两节都是与编程语言无关的,我们还是不知道怎么在程序中处理字符和文本. 本节讨论在Java中进行字符处理的基础 - ...

  5. C# 正则进阶

    .NET 中的正则表达式是基于 Perl 5 的正则表达式. 超时 从 .NET Framework 4.5 开始,正则表达式支持在匹配操作中指定超时时间.如果匹配超时,就会抛出 RegexMatch ...

  6. PAT基础编程练习

    7-1 厘米换算英尺英寸 (15 分)   如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(.现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12 ...

  7. Affinity Propagation Demo1学习

    利用AP算法进行聚类: 首先导入需要的包: from sklearn.cluster import AffinityPropagation from sklearn import metrics fr ...

  8. 使用MS Devops 来部署CRM Solution

    在D365 CE开发当中,有一个非常痛苦的问题就是开发,测试环境中的export import solution 部署问题. Devops中能很好的解决这个问题. 工作原理: 在Azure Devop ...

  9. C++ map通过key获取value

    c++的map中通过key获取value的方法 一般是value  =map[key],或者另一种迭代器的方式 1.在map中,由key查找value时,首先要判断map中是否包含key. 2.如果不 ...

  10. WampServer 更换 mysql

    下载另外版本的mysql,复制到 wamp/bin,初始化号 修改wamp 的/wampmanager.conf 复制相关配置文件 [mysqloptions] mysqlPortUsed = &qu ...