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中MySQL数据迁移到MongoDB脚本的方法
Apr 28 Python
使用Python脚本和ADB命令实现卸载App
Feb 10 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
pandas实现将日期转换成timestamp
Dec 07 Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 Python
Pytest参数化parametrize使用代码实例
Feb 22 Python
Python字符串格式化常用手段及注意事项
Jun 17 Python
使用python批量修改XML文件中图像的depth值
Jul 22 Python
Python绘制数码晶体管日期
Feb 19 Python
Python使用tkinter制作在线翻译软件
Feb 22 Python
python四种出行路线规划的实现
Jun 23 Python
python多次执行绘制条形图
Apr 20 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脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
jquery异步调用页面后台方法‏(asp.net)
2011/03/01 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
Vue精简版风格概述
2018/01/30 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
node crawler如何添加promise支持
2020/02/01 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
详解python进行mp3格式判断
2016/12/23 Python
Python实现网站注册验证码生成类
2017/06/08 Python
python pytest进阶之fixture详解
2019/06/27 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
python 监控logcat关键字功能
2020/09/04 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
html5 标签
2009/07/16 HTML / CSS
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
开门红主持词
2014/04/02 职场文书
银行金融服务方案
2014/06/11 职场文书
结婚十年感言
2015/07/31 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
话题作文之成长
2019/12/09 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
浅谈Python魔法方法
2021/06/28 Java/Android
MySQL优化及索引解析
2022/03/17 MySQL