在Django框架中自定义模板过滤器的方法

 更新时间:2015年07月20日 15:03:55   投稿:goldensun  
这篇文章主要介绍了在Django框架中自定义模板过滤器的方法,Django是重多人气Python框架中最为著名的一个,需要的朋友可以参考下

自定义过滤器就是有一个或两个参数的Python函数:

  •     (输入)变量的值
  •     参数的值, 可以是默认值或者完全留空

例如,在过滤器 {{ var|foo:"bar" }} 中 ,过滤器 foo 会被传入变量 var 和默认参数 bar。

过滤器函数应该总有返回值。 而且不能触发异常,它们都应该静静地失败。 如果出现错误,应该返回一个原始输入或者空字符串,这会更有意义。

这里是一些定义过滤器的例子:

def cut(value, arg):
  "Removes all values of arg from the given string"
  return value.replace(arg, '')

下面是一个可以用来去掉变量值空格的过滤器例子:

{{ somevariable|cut:" " }}

大多数过滤器并不需要参数。 下面的例子把参数从你的函数中拿掉了:

def lower(value): # Only one argument.
  "Converts a string into all lowercase"
  return value.lower()

当你定义完过滤器后,你需要用 Library 实例来注册它,这样就能通过Django的模板语言来使用了:

register.filter('cut', cut)
register.filter('lower', lower)

Library.filter() 方法需要两个参数:

  •     过滤器的名称(一个字串)
  •     过滤器函数本身

如果你使用的是Python 2.4或者更新的版本,你可以使用装饰器register.filter():

@register.filter(name='cut')
def cut(value, arg):
  return value.replace(arg, '')

@register.filter
def lower(value):
  return value.lower()

如果你想第二个例子那样不使用 name 参数,那么Django会把函数名当作过滤器的名字。

下面是一个完整的模板库的例子,它包含一个 cut 过滤器:

from django import template

register = template.Library()

@register.filter(name='cut')
def cut(value, arg):
  return value.replace(arg, '')

相关文章

  • perl上下文介绍

    perl上下文介绍

    了解perl的朋友,都知道perl上下文在perl编程中的重要性,这里粗浅的作下介绍,供初学的朋友参考
    2013-02-02
  • Perl读写文件简单示例

    Perl读写文件简单示例

    这篇文章主要介绍了Perl读写文件简单示例,本文直接给出实现代码,需要的朋友可以参考下
    2015-04-04
  • Perl实现的Linux下socket代理服务器

    Perl实现的Linux下socket代理服务器

    这篇文章主要介绍了Perl实现的Linux下socket代理服务器,比较简洁的一个版本,需要的朋友可以参考下
    2014-08-08
  • Perl 哈希Hash用法之入门教程

    Perl 哈希Hash用法之入门教程

    本文和大家重点讨论一下Perl Hash的用法,哈希是一种数据结构,和数组类似,但是,和数组不同的是,其索引不是数字,而是名字。也就是说,索引(这里,我们将它叫key)不是数字而是任意的唯一的字符串
    2013-02-02
  • 为Java程序员准备的10分钟Perl教程

    为Java程序员准备的10分钟Perl教程

    这10分钟教程并不是Java和Perl的比较。目标是探索作为Java开发人员如何快速学习Perl。以下是一些从我的角度来看的关键笔记
    2013-11-11
  • Perl中use和require用法对比分析

    Perl中use和require用法对比分析

    Perl 中的use和require,都是用来加载和引用Perl的模块,或者是子程序,区别在于Perl use是在当前默认的里面去寻找,一旦模块不在指定的区域内的化,用Perl use是不可以引入的
    2013-02-02
  • Perl学习基本备忘录

    Perl学习基本备忘录

    Perl学习基本备忘录,包括perl数组、命令行执行perl语句、perl引号规则、变量初始化、perl特殊变量等,有需要的朋友,可以参考下
    2013-02-02
  • perl 指定长度并生成一个随机的DNA序列的脚本代码

    perl 指定长度并生成一个随机的DNA序列的脚本代码

    perl 指定长度并生成一个随机的DNA序列的代码,有需要的朋友可以参考下
    2013-03-03
  • About Perl(翻译Perl官网介绍)

    About Perl(翻译Perl官网介绍)

    这篇文章主要介绍了About Perl(翻译Perl官网介绍),本文翻译自Perl官网介绍,讲解什么是Perl、Perl的历史、Perl 5 特征、Perl在WEB环境下的使用等内容,需要的朋友可以参考下
    2015-06-06
  • perl命令行参数内建数组@ARGV浅析

    perl命令行参数内建数组@ARGV浅析

    这篇文章主要介绍了perl命令行参数内建数组@ARGV浅析,本文重点在于讲解@ARGV的用法,并通过实例来说明,需要的朋友可以参考下
    2014-06-06

最新评论