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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
Python格式化压缩后的JS文件的方法
Mar 05 Python
python选择排序算法实例总结
Jul 01 Python
简单介绍Python的Django框架加载模版的方式
Jul 20 Python
python Django模板的使用方法
Jan 14 Python
详解从Django Rest Framework响应中删除空字段
Jan 11 Python
Python 文件数据读写的具体实现
Jan 24 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
简单了解python列表和元组的区别
May 14 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 Python
在Django中使用MQTT的方法
May 10 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列出一个目录下的所有文件的代码
2012/10/09 PHP
Javascript注入技巧
2007/06/22 Javascript
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
Js组件的一些写法
2010/09/10 Javascript
jQuery模拟超链接点击效果代码
2013/04/21 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
JS判断文本框内容改变事件的简单实例
2014/03/07 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
解决Layui 表单提交数据为空的问题
2018/08/15 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
python进阶教程之模块(module)介绍
2014/08/30 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
python画双y轴图像的示例代码
2019/07/07 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
实习报告评语
2014/04/26 职场文书
建筑工地文明标语
2014/10/09 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
2014年教务处工作总结
2014/12/03 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP