      @register.simple_tag
      def current_time(format_string):
          ...
  
  A couple of things to note about the ``simple_tag`` helper function:
  
      * Checking for the required number of arguments, etc., has already been
        done by the time our function is called, so we don't need to do that.
      * The quotes around the argument (if any) have already been stripped away,
        so we just receive a plain string.
 
</s> remove     given template, so we need to be careful not to clobber another node's state
    information. The easiest way to do this is to always use ``self`` as the key
    into ``render_context``. If you're keeping track of several state variables,
    make ``render_context[self]`` a dictionary.
 </s> add     given template, so we need to be careful not to clobber another node's
    state information. The easiest way to do this is to always use ``self`` as
    the key into ``render_context``. If you're keeping track of several state
    variables, make ``render_context[self]`` a dictionary. </s> remove tag is used inside a ``{% autoescape off %}`` block.
 </s> add tag is used inside a :ttag:`{% autoescape off %}<autoescape>` block. </s> remove       for them using code like::
 </s> add       for them using code like:

      .. code-block:: python </s> remove       output, regardless of whether they are in an ``autoescape`` block or not.
      These strings are only escaped once, however, even if auto-escaping
 </s> add       output, regardless of whether they are in an :ttag:`autoescape` block or
      not. These strings are only escaped once, however, even if auto-escaping </s> remove for the template fragment. Example::
 </s> add for the template fragment. Example:

.. code-block:: python
A few things to note about the ``simple_tag`` helper function:
      @register.simple_tag
      def current_time(format_string):
          ...
  
A few things to note about the ``simple_tag`` helper function:
  
      * Checking for the required number of arguments, etc., has already been
        done by the time our function is called, so we don't need to do that.
      * The quotes around the argument (if any) have already been stripped away,
        so we just receive a plain string.
keep keep keep keep replace keep keep keep keep keep
 Brushed up the custom template tag 'howto' guide by moving the assignment_tag doc to a more appropriate place (i.e. under the "Setting a variable in the context" section), adding cross references, fixing a few minor inaccuracies and doing a little PEP8 cleanup.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16909 bcc190cf-cafb-0310-a4f2-bffc1f526a37 
docs/howto/custom-template-tags.txt