django 创建过滤器的实例详解


Posted in Python onAugust 14, 2017

django 创建过滤器

一、需求来源:

假如有一个模板文件有一个字符串变量,这个字符串变量中不能有任何的空格,而恰恰这个模板被很多个视图函数多调用,那么你每次在视图函数中穿这个字符串变量的时候,都要进行字符串的处理,这相对来说是比较麻烦的,django提供了一种叫做过滤器的方式,可以在模板中进行统一处理。

二、自定义模板库准备工作:

创建一个模板库分两步走:

第一,决定模板库应该放在哪里。你可以单独通过manage.py startapp创建一个app专门用来存放自定义的模板库;也可以放在项目中的任何一个app下面。这里推荐第一种方式,因为第一种方式写完后,可以移植到其他项目中使用。不用重复编写。但是,无论你采用哪种方式,你都要把存放你模板库的app添加到settings.py的INSTALLED_APPS中!!!

第二,在以上你选择的包下,创建一个名叫templatetags目录,这个目录应当和models.py和views.py处于同一层次。然后在templatetags中创建两个空文件:一个是__init__.py表示这不是一个普通的文件夹,这是一个Python代码包,另外一个是你用来存放模板库的文件(比如:my_template.py)。然后在你需要用到这个库文件的模板文件中,使用{% load my_template.py %}进行导入,重要的事情再说一遍,你必须把这个my_template.py所处的app添加到settings.py的INSTALLED_APPS中才有用。

三、创建自定义过滤器:

过滤器实际上就是一个带有一个或者两个参数的python函数:

  • 需要被过滤的变量
  • 传递进来的值,该值可以为空

例如我们创建一个将变量的所有空格替换成某个值的过滤器:

def removespace(value,arg):
  return value.replace(' ',arg)

然后注册近模板中,使用以下代码进行注册:

from django import template

register = template.Library()

@register.filter
def removespace(value,arg):
  return value.replace('',arg)

那么你在使用的时候,只要在模板中使用一下代码进行使用:

{{ variable|removespace:"a" }}

那么variable这个变量中的所有空格都会被替换成a。

以上就是django 创建过滤器的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python实现复制整个目录的方法
May 12 Python
发布你的Python模块详解
Sep 15 Python
pygame实现弹力球及其变速效果
Jul 03 Python
python 按照固定长度分割字符串的方法小结
Apr 30 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
python重试装饰器的简单实现方法
Jan 31 Python
Django Sitemap 站点地图的实现方法
Apr 29 Python
python pandas模块基础学习详解
Jul 03 Python
Python小程序之在图片上加入数字的代码
Nov 26 Python
Python urllib.request对象案例解析
May 11 Python
openCV提取图像中的矩形区域
Jul 21 Python
Python Pygame实现俄罗斯方块
Feb 19 Python
django创建自定义模板处理器的实例详解
Aug 14 #Python
Python微信库:itchat的用法详解
Aug 14 #Python
Python实现的概率分布运算操作示例
Aug 14 #Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 #Python
python的mysqldb安装步骤详解
Aug 14 #Python
python制作小说爬虫实录
Aug 14 #Python
python安装Scrapy图文教程
Aug 14 #Python
You might like
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
php取得字符串首字母的方法
2015/03/25 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
JS中的BOM应用
2018/02/02 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
Python中optparse模块使用浅析
2015/01/01 Python
Python中运行并行任务技巧
2015/02/26 Python
Python实现基本线性数据结构
2016/08/22 Python
聊聊Python中的pypy
2018/01/12 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
Python super()方法原理详解
2020/03/31 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
"火柴棍式"程序员面试题
2014/03/16 面试题
小学教师自我鉴定范文
2014/03/20 职场文书
标准毕业生自荐信
2014/06/24 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
谢师宴家长致辞
2015/07/27 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android