From 314fabc930a1bb361ca06e9c948bb726ad8df99a Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Sun, 19 Dec 2010 15:00:50 +0000 Subject: Fixed #14908 -- Added a 'takes_context' argument to simple_tag. Thanks to Julien Phalip for driving the issue and providing the final patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@14987 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/howto/custom-template-tags.txt | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'docs/howto') diff --git a/docs/howto/custom-template-tags.txt b/docs/howto/custom-template-tags.txt index 95ce274460..246bb67af0 100644 --- a/docs/howto/custom-template-tags.txt +++ b/docs/howto/custom-template-tags.txt @@ -669,9 +669,27 @@ A couple of things to note about the ``simple_tag`` helper function: * If the argument was a template variable, our function is passed the current value of the variable, not the variable itself. -When your template tag does not need access to the current context, writing a -function to work with the input values and using the ``simple_tag`` helper is -the easiest way to create a new tag. +.. versionadded:: 1.3 + +If your template tag needs to access the current context, you can use the +``takes_context`` argument when registering your tag:: + + # The first argument *must* be called "context" here. + def current_time(context, format_string): + timezone = context['timezone'] + return your_get_current_time_method(timezone) + + register.simple_tag(takes_context=True)(current_time) + +Or, using decorator syntax:: + + @register.simple_tag(takes_context=True) + def current_time(context, format_string): + timezone = context['timezone'] + return your_get_current_time_method(timezone) + +For more information on how the ``takes_context`` option works, see the section +on `inclusion tags`_. .. _howto-custom-template-tags-inclusion-tags: -- cgit v1.3