1. 程式人生 > >Django深入模板引擎

Django深入模板引擎

import re

class CurrentTimeNode3(template.Node):

def __init__(self, format_string, var_name):

self.format_string = format_string

self.var_name = var_name

def render(self, context):

now = datetime.datetime.now()

context[self.var_name] = now.strftime(self.format_string)

return ''

def do_current_time(parser, token):

# This version uses a regular expression to parse tag contents.

try:

# Splitting by None == splitting by spaces.

tag_name, arg = token.contents.split(None, 1)

except ValueError:

msg = '%r tag requires arguments' % token.contents[0]

raise template.TemplateSyntaxError(msg)

m = re.search(r'(.*?) as (\w+)', arg)

if m:

fmt, var_name = m.groups()

else:

msg = '%r tag had invalid arguments' % tag_name

raise template.TemplateSyntaxError(msg)

if not (fmt[0] == fmt[-1] and fmt[0] in ('"', "'")):

msg = "%r tag's argument should be in quotes" % tag_name

raise template.TemplateSyntaxError(msg)

return CurrentTimeNode3(fmt[1:-1], var_name)