Django自定义模板过滤器和标签
2016-01-27 11:08
886 查看
#coding=utf8 '''自定义模板标签过滤器及标签''' from django import template import datetime import re #正则匹配相关的库 register=template.Library() #用来注册自定义的过滤器 @register.filter def Mylower(value): '''自定义过滤器:大写转小写,value为变量名,arg为变量值''' return value.lower() #自定义标签 #第一步编写编译函数 @register.tag(name='current_time') def do_current_time(parser,token): try: tag_name,format_str=token.split_contents() except ValueError: error_msg='%s tag requires single argument' % token.split_contents()[0] raise template.TemplateSyntaxError(error_msg) return CurrentTimeNode(format_str[1:-1]) #第二步编写节点 class CurrentTimeNode(template.Node): def __init__(self,format_str): self.format_str=format_str def render(self, context): now=datetime.datetime.now() return now.strftime(self.format_str) #自定义标签,带上下文变量 @register.tag(name='current_time2') def do_current_time2(parser,token): try: tag_name,arg=token.contents.split(None,1) #None代表空格,按空格切割,仅切割一次 except ValueError: error_msg='%s tag requires arguments' % token.split_contents()[0] raise template.TemplateSyntaxError(error_msg) m=re.search(r'(.*?) as (\w+)',arg) if m: format_str,var_name=m.groups() else: error_msg='%s tag had invalid arguments' % tag_name raise template.TemplateSyntaxError(error_msg) if not (format_str[0]==format_str[-1] and format_str[0] in ['"',"'"]): error_msg="%s tag's format_argument should in quotes" % tag_name raise template.TemplateSyntaxError(error_msg) return CurrentTimeNode2(format_str,var_name) class CurrentTimeNode2(template.Node): def __init__(self,format_str,var_name): self.format_str=format_str self.var_name=var_name def render(self, context): now=datetime.datetime.now() context[self.var_name]=now.strftime(self.format_str) return ''
相关文章推荐
- django中使用jquery ajax post数据出现403错误的解决办法(两种方法)
- django使用ajax post数据出现403错误如何解决
- windows+apache+mod_python配置django运行环境
- python Django连接MySQL数据库做增删改查
- django自定义Field实现一个字段存储以逗号分隔的字符串
- 在Python的Django框架中加载模版的方法
- 在Django中使用Sitemap的方法讲解
- 详解Django中的form库的使用
- Django中的CACHE_BACKEND参数和站点级Cache设置
- 剖析Django中模版标签的解析与参数传递
- Python中DJANGO简单测试实例
- Python的Django框架中的数据库配置指南
- 在Django的上下文中设置变量的方法
- 在Python的Django框架中编写编译函数
- 在Django的URLconf中进行函数导入的方法
- 在Python的Django框架中生成CSV文件的方法
- 在主机商的共享服务器上部署Django站点的方法
- 使用Python的Django框架中的压缩组件Django Compressor
- 对于Python的Django框架部署的一些建议
- Djang中静态文件配置方法