summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Beaven <smileychris@gmail.com>2011-05-20 02:42:28 +0000
committerChris Beaven <smileychris@gmail.com>2011-05-20 02:42:28 +0000
commit803a454aefaca780d0614a8053f3bfe8a76e6876 (patch)
treee8e6f96892e0a89b8c63551b56b6898ac8b3f478
parent90e8e48239085a793d34b1bd18a7834bbb46920a (diff)
Fixes #15732 -- better introduction of template filter decorator concepts (first register, then stringfilter). Thanks for the patch, hahasee.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16251 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--docs/howto/custom-template-tags.txt40
1 files changed, 21 insertions, 19 deletions
diff --git a/docs/howto/custom-template-tags.txt b/docs/howto/custom-template-tags.txt
index c9dacb590f..1b56cf85c3 100644
--- a/docs/howto/custom-template-tags.txt
+++ b/docs/howto/custom-template-tags.txt
@@ -105,23 +105,6 @@ your function. Example::
"Converts a string into all lowercase"
return value.lower()
-Template filters that expect strings
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you're writing a template filter that only expects a string as the first
-argument, you should use the decorator ``stringfilter``. This will
-convert an object to its string value before being passed to your function::
-
- from django.template.defaultfilters import stringfilter
-
- @stringfilter
- def lower(value):
- return value.lower()
-
-This way, you'll be able to pass, say, an integer to this filter, and it
-won't cause an ``AttributeError`` (because integers don't have ``lower()``
-methods).
-
Registering custom filters
~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -140,18 +123,37 @@ The ``Library.filter()`` method takes two arguments:
You can use ``register.filter()`` as a decorator instead::
@register.filter(name='cut')
- @stringfilter
def cut(value, arg):
return value.replace(arg, '')
@register.filter
- @stringfilter
def lower(value):
return value.lower()
If you leave off the ``name`` argument, as in the second example above, Django
will use the function's name as the filter name.
+Template filters that expect strings
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If you're writing a template filter that only expects a string as the first
+argument, you should use the decorator ``stringfilter``. This will
+convert an object to its string value before being passed to your function::
+
+ from django import template
+ from django.template.defaultfilters import stringfilter
+
+ register = template.Library()
+
+ @register.filter
+ @stringfilter
+ def lower(value):
+ return value.lower()
+
+This way, you'll be able to pass, say, an integer to this filter, and it
+won't cause an ``AttributeError`` (because integers don't have ``lower()``
+methods).
+
Filters and auto-escaping
~~~~~~~~~~~~~~~~~~~~~~~~~