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 可爱的大小写
Sep 06 Python
浅析Python中的多重继承
Apr 28 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
python实现二叉树的遍历
Dec 11 Python
Python之reload流程实例代码解析
Jan 29 Python
Python数据持久化shelve模块用法分析
Jun 29 Python
python将print输出的信息保留到日志文件中
Sep 27 Python
python3 实现调用串口功能
Dec 26 Python
pygame实现飞机大战
Mar 11 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
May 15 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 Python
python生成word合同的实例方法
Jan 12 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
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
PHP基于XMLWriter操作xml的方法分析
2017/07/17 PHP
PHP实现的MD5结合RSA签名算法实例
2017/10/07 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
详解Angular5 服务端渲染实战
2018/01/04 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
Python Socket编程入门教程
2014/07/11 Python
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
Python常见异常分类与处理方法
2017/06/04 Python
python面向对象 反射原理解析
2019/08/12 Python
python中wx模块的具体使用方法
2020/05/15 Python
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
美国在线宠物商店:Chewy
2019/01/12 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
《钱学森》听课反思
2014/03/01 职场文书
商务日语专业自荐信
2014/04/17 职场文书
省文明单位申报材料
2014/05/08 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
科技活动周标语
2014/10/08 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记