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判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
python 实现将字典dict、列表list中的中文正常显示方法
Jul 06 Python
详解Python 正则表达式模块
Nov 05 Python
python twilio模块实现发送手机短信功能
Aug 02 Python
Python3进制之间的转换代码实例
Aug 24 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
Jan 19 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 Python
Python之变量类型和if判断方式
May 05 Python
python文件排序的方法总结
Sep 13 Python
利用python制作拼图小游戏的全过程
Dec 04 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
用python批量移动文件
Jan 14 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权限分配的实现代码
2013/04/28 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
PHP基础知识介绍
2013/09/17 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
调用jQuery滑出效果时闪烁的解决方法
2014/03/27 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
2015/08/06 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python元字符的用法实例解析
2018/01/17 Python
TensorFlow损失函数专题详解
2018/04/26 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
python3将变量输入的简单实例
2020/08/19 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
HTML5 video进入全屏和退出全屏的实现方法
2020/07/28 HTML / CSS
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
心得体会开头
2014/01/01 职场文书
城市规划应届毕业生自荐信
2014/07/04 职场文书
化工见习报告范文
2014/10/31 职场文书
辅导员学期工作总结
2015/08/14 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书
2019财务转正述职报告
2019/06/27 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS
python opencv通过4坐标剪裁图片
2021/06/05 Python
java设计模式--三种工厂模式详解
2021/07/21 Java/Android