django自定义 过滤器
2012-07-24 15:55
323 查看
我写的博客程序,为了实现一些特殊的功能,需要自己写个过滤器。现在把方法记录下来。
过滤器的功能大概如下,在数据库里取出存储的html代码(各种富文本编辑器保存的代码)。然后取出来展示,做类似于文章列表。在一开始,我们会这样取出来:
{% autoescape off %} {{ post.myContent}} {% endautoescape %}
但是这个时候就会开始加载图片资源(有img标签),如果图片太多,太大,就会使页面加载得太慢。用户体验很差。
也许你会问,为什么不用jquery的lazyload插件,我觉得那是伪的延迟加载,根本无助于减轻服务器的压力。
所以现在需要写个过滤器,在无须加载图片的时候,先使得服务器不用加载图片。
正文如下:
在app目录下,新建一个目录:
templatetags (名字不要搞错
├── filters.py (随便建一个文件,名字随便起
├── filters.pyc
├── __init__.py (这个是自己创建的空文件,只要名字对就行
└── __init__.pyc
现在看内容:
自己编写过滤器很简单,只需要两个步骤:
1、定义一个函数,接收至少一个参数,如function(value,arg)
2、使用register.fileter('过滤器名字',函数名) 注册过滤器
接下来就是使用了。
在html文件中:
{% load filters %} //fileters 是过滤器的那个文件名
{% autoescape off %} {{ post.myContent|cut_imagetags}} {% endautoescape %}
先看个没用过滤器之前的例子,加载页面时,服务器端:
[24/Jul/2012 02:35:46] "GET /media/1343066025.950.280283821055DeepinScrot-0444.png HTTP/1.1" 200 43561
[24/Jul/2012 02:35:46] "GET /media/1343066026.890.981396435618DeepinScrot-1556.png HTTP/1.1" 200 57454
[24/Jul/2012 02:35:46] "GET /media/1343066026.030.717419530083DeepinScrot-1029.png HTTP/1.1" 200 339557
看到浏览器向服务器请求了三张图片。
使用了过滤器之后,就没有再请求图片资源了。
自定义过滤器的方法就是如此,就看大家自己要应用在哪些场景上了。
本文出自 “YEELONⒼ ” 博客,请务必保留此出处http://yeelone.blog.51cto.com/1476571/940949
过滤器的功能大概如下,在数据库里取出存储的html代码(各种富文本编辑器保存的代码)。然后取出来展示,做类似于文章列表。在一开始,我们会这样取出来:
{% autoescape off %} {{ post.myContent}} {% endautoescape %}
但是这个时候就会开始加载图片资源(有img标签),如果图片太多,太大,就会使页面加载得太慢。用户体验很差。
也许你会问,为什么不用jquery的lazyload插件,我觉得那是伪的延迟加载,根本无助于减轻服务器的压力。
所以现在需要写个过滤器,在无须加载图片的时候,先使得服务器不用加载图片。
正文如下:
在app目录下,新建一个目录:
templatetags (名字不要搞错
├── filters.py (随便建一个文件,名字随便起
├── filters.pyc
├── __init__.py (这个是自己创建的空文件,只要名字对就行
└── __init__.pyc
现在看内容:
#!/usr/bin/env python #coding:utf-8 from django import template register = template.Library() def cut_imagetags(value): print value return value register.filter('cut_imagetags', cut_imagetags)
自己编写过滤器很简单,只需要两个步骤:
1、定义一个函数,接收至少一个参数,如function(value,arg)
2、使用register.fileter('过滤器名字',函数名) 注册过滤器
接下来就是使用了。
在html文件中:
{% load filters %} //fileters 是过滤器的那个文件名
{% autoescape off %} {{ post.myContent|cut_imagetags}} {% endautoescape %}
先看个没用过滤器之前的例子,加载页面时,服务器端:
[24/Jul/2012 02:35:46] "GET /media/1343066025.950.280283821055DeepinScrot-0444.png HTTP/1.1" 200 43561
[24/Jul/2012 02:35:46] "GET /media/1343066026.890.981396435618DeepinScrot-1556.png HTTP/1.1" 200 57454
[24/Jul/2012 02:35:46] "GET /media/1343066026.030.717419530083DeepinScrot-1029.png HTTP/1.1" 200 339557
看到浏览器向服务器请求了三张图片。
使用了过滤器之后,就没有再请求图片资源了。
自定义过滤器的方法就是如此,就看大家自己要应用在哪些场景上了。
本文出自 “YEELONⒼ ” 博客,请务必保留此出处http://yeelone.blog.51cto.com/1476571/940949
相关文章推荐
- 在Django框架中自定义模板过滤器的方法
- Django自定义模板过滤器和标签
- 详解django中自定义标签和过滤器
- Django 自定义模版标签和过滤器
- django--自定义过滤器
- Django自定义过滤器
- Django自定义过滤器
- DJANGO之自定义模板过滤器
- django 自定义模板过滤器
- django1.5 自定义过滤器和标签
- Django自定义过滤器filter
- Django自定义过滤器定义与用法示例
- django自定义过滤器实例
- 自定义标签、过滤器-django
- django 自定义模板标签和过滤器
- django中自定义标签和过滤器
- django中自定义标签和过滤器
- django 自定义模板标签和过滤器
- django--模版系统-过滤器的自定义,两种加载模版(template)的方法
- Django中的自定义过滤器