  
  Stateful template tags
  ----------------------
  
  Template tags that store rendering state on the node itself may experience
  problems if they are used with the new :ref:`cached
  template loader<template-loaders>`.
  
  All of the built-in Django template tags are safe to use with the cached
  loader, but if you're using custom template tags that come from third
  party packages, or from your own code, you should ensure that the
 
</s> remove    requires the use of the csrf_token template tag in the template. If you
 </s> add    requires the use of the ``csrf_token`` template tag in the template. If you </s> remove  * All of the CSRF has moved from contrib to core (with backwards compatible
   imports in the old locations, which are deprecated).
 </s> add  * All of the CSRF has moved from contrib to core (with backwards
   compatible imports in the old locations, which are deprecated and
   will cease to be supported in Django 1.4). </s> remove ``django.contrib.auth.decorators`` provides the decorators ``login_required``,
``permission_required`` and ``user_passes_test``. Previously it was possible to
use these decorators both on functions (where the first argument is 'request')
and on methods (where the first argument is 'self', and the second argument is
'request'). However, we have found that the trick which enabled this is
flawed. It only works in limited circumstances, and produces errors that are
very difficult to debug when it does not work.

For this reason, the 'auto adapt' behaviour has been removed, and if you are
using these decorators on methods, you will need to manually apply
:func:`django.utils.decorators.method_decorator` to convert the decorator to one
that works with methods. You would change code from this::
 </s> add ``django.contrib.auth.decorators`` provides the decorators
``login_required``, ``permission_required`` and
``user_passes_test``. Previously it was possible to use these
decorators both on functions (where the first argument is 'request')
and on methods (where the first argument is 'self', and the second
argument is 'request'). Unfortunately, flaws were discovered in the
code supporting this: it only works in limited circumstances, and
produces errors that are very difficult to debug when it does not
work.

For this reason, the 'auto adapt' behavior has been removed, and if
you are using these decorators on methods, you will need to manually
apply :func:`django.utils.decorators.method_decorator` to convert the
decorator to one that works with methods. For example, you would
change code from this:: </s> remove ``CsrfResponseMiddleware``, the middleware that automatically inserted CSRF
tokens into POST forms in outgoing pages, has been deprecated in favor of a
template tag method (see above), and will be removed completely in Django
1.4. ``CsrfMiddleware``, which includes the functionality of
``CsrfResponseMiddleware`` and ``CsrfViewMiddleware``, has likewise been
deprecated.
 </s> add ``CsrfResponseMiddleware``, the middleware that automatically inserted
CSRF tokens into ``POST`` forms in outgoing pages, has been deprecated
in favor of a template tag method (see above), and will be removed
completely in Django 1.4. ``CsrfMiddleware``, which includes the
functionality of ``CsrfResponseMiddleware`` and
``CsrfViewMiddleware``, has likewise been deprecated. </s> remove :setting:`DATABASE_ENGINE` setting to read ``postgresql_psycopg2``.
 </s> add :setting:`DATABASE_ENGINE` setting to use
``django.db.backends.postgresql_psycopg2``.
Template tags that store rendering state on their ``Node`` subclass
may experience problems if they are used with the new :ref:`cached
  
  Stateful template tags
  ----------------------
  
Template tags that store rendering state on their ``Node`` subclass
may experience problems if they are used with the new :ref:`cached
Template tags that store rendering state on their ``Node`` subclass
may experience problems if they are used with the new :ref:`cached
  template loader<template-loaders>`.
  
  All of the built-in Django template tags are safe to use with the cached
  loader, but if you're using custom template tags that come from third
  party packages, or from your own code, you should ensure that the
keep keep keep keep replace replace keep keep keep keep keep
 Update 1.2 release notes in anticipation of final release.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@13259 bcc190cf-cafb-0310-a4f2-bffc1f526a37 
docs/releases/1.2.txt