Fixed #4793 -- Tweaked custom filter documentation a little to possibly reduce some confusion. Thanks, SmileyChris.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@6143 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2007-09-13 23:30:26 +00:00
parent ce249d4366
commit 1b0e588118
1 changed files with 19 additions and 13 deletions

View File

@ -642,7 +642,23 @@ your function. Example::
"Converts a string into all lowercase" "Converts a string into all lowercase"
return value.lower() return value.lower()
When you've written your filter definition, you need to register it with Template filters which expect strings
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you're writing a template filter which only expects a string as the first
argument, you should use the included decorator ``stringfilter``. This will
convert an object to it's string value before being passed to your function::
from django.template.defaultfilters import stringfilter
@stringfilter
def lower(value):
return value.lower()
Registering a custom filters
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Once you've written your filter definition, you need to register it with
your ``Library`` instance, to make it available to Django's template language:: your ``Library`` instance, to make it available to Django's template language::
register.filter('cut', cut) register.filter('cut', cut)
@ -658,28 +674,18 @@ If you're using Python 2.4 or above, you can use ``register.filter()`` as a
decorator instead:: decorator instead::
@register.filter(name='cut') @register.filter(name='cut')
@stringfilter
def cut(value, arg): def cut(value, arg):
return value.replace(arg, '') return value.replace(arg, '')
@register.filter @register.filter
@stringfilter
def lower(value): def lower(value):
return value.lower() return value.lower()
If you leave off the ``name`` argument, as in the second example above, Django If you leave off the ``name`` argument, as in the second example above, Django
will use the function's name as the filter name. will use the function's name as the filter name.
Template filters which expect strings
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you are writing a template filter which only expects a string as the first
argument, you should use the included decorator ``stringfilter`` which will convert
an object to it's string value before being passed to your function::
from django.template.defaultfilters import stringfilter
@stringfilter
def lower(value):
return value.lower()
Writing custom template tags Writing custom template tags
---------------------------- ----------------------------