Django Custom template tags

2011-05-20

用 Django 开发 template 中的 tag 已经定义了很多常用的功能。然而必要时候还是的扩展她的功能。

在 app/templatetags 目录下建立 mytags.py 文件(没有templatetags目录请自行建立)

mytags.py 源代码如下:

from django import template
#import datetime

register = template.Library()

def do_user(parser, token):
    bits = token.split_contents()
    if len(bits) < 2:
        raise TemplateSyntaxError(" get_userProfile must  one args %s" % token.contents)
    v = bits[1]
    var = parser.compile_filter(v)
    return userNode(var)

class userNode(template.Node):
    def __init__(self,user):
        self.user = user
    def render(self, context):
        user = self.user.resolve(context, True)
        return user
    
register.tag('get_userProfile', do_user)

在tmplate中使用tags:

{# 载入tags #}
{% load qintags %}

{# 调用tag #}
{% get_userProfile  user  %}