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 10 Python
通过Python使用saltstack生成服务器资产清单
Mar 01 Python
详解windows python3.7安装numpy问题的解决方法
Aug 13 Python
Python中反射和描述器总结
Sep 23 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
python开头的coding设置方法
Aug 08 Python
python global和nonlocal用法解析
Feb 03 Python
关于Python Tkinter Button控件command传参问题的解决方式
Mar 04 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
Python文件时间操作步骤代码详解
Apr 13 Python
基于python计算并显示日间、星期客流高峰
May 07 Python
Python 如何将integer转化为罗马数(3999以内)
Jun 05 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
文件系统基本操作类
2006/11/23 PHP
PHP4中session登录页面的应用
2008/07/25 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
javascript innerHTML使用分析
2010/12/03 Javascript
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
简单的代码实现jquery定时器
2013/11/17 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
理解javascript模块化
2016/03/28 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
原生JS轮播图插件
2017/02/09 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
通过vue刷新左侧菜单栏操作
2020/08/06 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
Python创建文件和追加文件内容实例
2014/10/21 Python
python通过索引遍历列表的方法
2015/05/04 Python
python解析xml文件实例分析
2015/05/27 Python
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
解决uWSGI的编码问题详解
2017/03/24 Python
基于循环神经网络(RNN)的古诗生成器
2018/03/26 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
印度低票价航空公司:GoAir
2017/10/11 全球购物
公司户外活动总结
2014/07/04 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
高校教师个人总结
2015/02/10 职场文书
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技