fancy_tag iconfancy_tag 0.1.5

A replacement for Django's simple_tag decorator
fancy_tag is a template tag decorator app designed to replace Django's built in simple_tag decorator. It's backwards compatible with simple_tag and adds new calling options like named arguments.

Installation:

 1. Add the fancy_tag package to your Python path
 2. Instead of:

 @register.simple_tag
 def some_tag(arg1, arg2):
 return '%s %s' % (arg1, arg2)


 Use:

 @fancy_tag(register)
 def some_tag(arg1, arg2):
 return '%s %s' % (arg1, arg2)


Examples

Keyword Arguments

Python Code:

@fancy_tag(register)
def say_cheese(name, thing_to_say='cheese'):
 return 'Hey, %s! Say %s!' % (name, thing_to_say)


Template Code:

{% say_cheese "Jacob" %} -> "Hey, Jacob! Say Cheese!"
{% say_cheese "Malcolm" thing_to_say="Vegemite" %} -> "Hey Malcolm! Say Vegemite!"


Variable Length Arguments

Python Code:

@fancy_tag(register)
def greet_people(*args):
 return 'Hello, %s' % ', '.join(args)


Template Code:

{% greet_people "Larry" "Darryl" "Darryl" %}

Produces:

Hello, Larry, Darryl, Darryl

Variable Length Keyword Arguments

Python Code:

@fancy_tag(register)
def watch_your_mouth(s, **kwargs):
 for key, value in kwargs.items():
 s = s.replace(key, value)
 return s


Template Code:

{% watch_your_mouth "You damn dirty ape!" "damn"="doggone" "dirty"="handsome" %}


Produces:

You doggone handsome ape!"
Assigning Output To A Variable

Python Code:

@fancy_tag(register)
def now(format_string):
 df = DateFormat(datetime.now())
 return df.format(format_string)


Template Code:

{% now as just_now %}
Oh no, it's already {{ just_now }}!


Produces:

Oh no, it's already February 20th, 2010!

Accessing the Template Context

Python Code:

@fancy_tag(register, takes_context)
def say_hello_to_user(context, phrase):
 return u'%s, %s!' % (phrase, context['user'])


Template Context:

{'user': 'Tobias'} # Provided by a template context processor, for example

Template Code:

{% say_hello_to_user "Hallo" %}

Produces:

Hallo, Tobias!

Testing

With Django in your python path, run tests/run_tests.py

Source

http://github.com/trapeze/fancy_tag

Main features:

  • Keyword arguments - arguments can be explicitly assigned to parameter specific parameters in the template tag function
  • Variable length arguments - The "*args" and "**kwargs" notation
  • The trailing "as < varname >" to assign the output of the template tag to a variable in the template's context.

last updated on:
December 14th, 2010, 20:41 GMT
price:
FREE!
developed by:
Sam Bull
license type:
Other/Proprietary License
category:
ROOT \ Internet \ HTTP (WWW)

FREE!

In a hurry? Add it to your Download Basket!

user rating

UNRATED
0.0/5
 

0/5

Add your review!

SUBMIT