﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
12784	Template tag and filter decorator fix	jimhark	nobody	"I think the main page for this documentation is:

http://docs.djangoproject.com/en/dev/howto/custom-template-tags/

But other pages may also need to be corrected.

When using register.filter() or register.tag() as a decorator, if you leave off the name argument, you still need the parentheses:

{{{
  @register.filter
  @stringfilter
  def lower(value):
      return value.lower()
}}}

Must instead be:

{{{
  @register.filter()
  @stringfilter
  def lower(value):
      return value.lower()
}}}

I figured this out by reading the source.

I notice the Django documentation tends not to be just simple reference, but incorporates lots of examples and best practices. For clarity and performance, I would write this as:

{{{
  makefilter = register.filter()
  
  @makefilter
  @stringfilter
  def lower(value):
      return value.lower()
}}}

And I'd use a similar approach to register.tag(). I urge you to consider this form when correcting the documentation. However, for the rest of this bug report I ignore this style issue and show the simplest fix.

Here are the rest of the changes:

Change:

{{{
  @register.filter
  def myfilter(value):
      return value
  myfilter.is_safe = True
}}}

To:

{{{
  @register.filter()
  def myfilter(value):
      return value
  myfilter.is_safe = True
}}}

Change:

{{{
  @register.filter
  def add_xx(value):
      return '%sxx' % value
  add_xx.is_safe = True
}}}

To:

{{{
  @register.filter()
  def add_xx(value):
      return '%sxx' % value
  add_xx.is_safe = True
}}}

Change:

{{{
  @register.tag
  def shout(parser, token):
}}}

To:

{{{
  @register.tag()
  def shout(parser, token):
}}}

Thanks,

Jim"		closed	Documentation	1.1		worksforme	Template tag filter decorator		Unreviewed	0	0	0	0	0	0
