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

所属分类: 脚本专栏 / perl 阅读数: 1100
收藏 0 赞 0 分享

自定义过滤器就是有一个或两个参数的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文件读取的经典用法,有需要的朋友可以参考下
收藏 0 赞 0 分享

perl大文件读取处理的模块介绍

perl CPAN中有一个Tie-File 模块极大方便了对大文件的操作
收藏 0 赞 0 分享

perl跳过首行读取文件的实现代码

要求直接跳过第一行,然后读取后面的内容,以下代码来自网络,感谢原作者的辛苦劳动,顺祝新年快乐
收藏 0 赞 0 分享

Perl split字符串分割函数用法指南

本文向大家简单介绍一下Perl split函数的用法,Perl中的一个非常有用的函数是Perl split函数-把字符串进行分割并把分割后的结果放入数组中
收藏 0 赞 0 分享

perl数组的多数字下标示例代码

perl数组中正常的下标运算,想必大家都比较熟悉,这里不作说明。本文想说的是perl数组下标的多数字取值,可以极大的方便数组的操作
收藏 0 赞 0 分享

perl对m x n类似表进行按列排序的代码

perl对m x n类似表进行按列排序的代码,有需要的朋友可以参考下
收藏 0 赞 0 分享

perl常量、多维数组及变量的初始化的实例代码

perl常量、多维数组及变量的初始化的例子,供大家学习参考
收藏 0 赞 0 分享

perl的logwrapper使用实例代码

perl的logwrapper可以对任何的函数将标准输出和错误输出重定向到对应的log文件
收藏 0 赞 0 分享

Perl中处理时间的几个函数

本文为大家介绍Perl中处理时间的几个函数,供大家学习参考
收藏 0 赞 0 分享

perl上下文介绍

了解perl的朋友,都知道perl上下文在perl编程中的重要性,这里粗浅的作下介绍,供初学的朋友参考
收藏 0 赞 0 分享
查看更多