Reorganize the beta release notes a bit and trim down the section on feeds.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12390 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
James Bennett 2010-02-06 05:19:15 +00:00
parent 2638c90ce2
commit f30f1514f3
1 changed files with 43 additions and 89 deletions

View File

@ -23,23 +23,21 @@ This document covers changes since the Django 1.2 alpha release; the
updated features in Django between 1.1 and 1.2 alpha.
What's new in 1.2 beta
======================
Deprecations and other changes in 1.2 beta
==========================================
This 1.2 beta release marks the final feature freeze for Django 1.2;
while most feature development was completed for 1.2 alpha (which
constituted a freeze on major features), a few other new features were
added afterward and so are new as of 1.2 beta.
Additionally, some existing APIs have been deprecated; under `our API
stability policy <misc-api-stability>`, these APIs will continue to
work for now, but will raise ``PendingDeprecationWarning`` in Django
1.2 and ``DeprecationWarning`` in Django 1.3, before being removed in
Django 1.4.
This beta release deprecates one portion of public API, and introduces
a potentially backwards-incompatible change to another. Under `our API
stability policy <misc-api-stability>`, deprecation proceeds over
multiple release cycles: initially, the deprecated API will raise
``PendingDeprecationWarning``, followed by raising
``DeprecationWarning`` in the following release, and finally removal
of the deprecated API. APIs beginning the deprecation process in
Django 1.2 will be removed in the Django 1.4 release.
Class-based test runners
------------------------
Unit test runners
-----------------
Django 1.2 changes the test runner tools to use a class-based
approach. Old style function-based test runners will still work, but
@ -47,79 +45,17 @@ should be updated to use the new :ref:`class-based runners
<topics-testing-test_runner>`.
``Feed`` in ``django.contrib.syndication.feeds``
------------------------------------------------
Syndication feeds
-----------------
The :class:`django.contrib.syndication.feeds.Feed` class is being
replaced by the :class:`django.contrib.syndication.views.Feed` class.
The old ``feeds.Feed`` class is deprecated, and will be removed in
Django 1.4.
The old ``feeds.Feed`` class is deprecated. The new class has an
almost identical API, but allows instances to be used as views.
The new class has an almost identical API, but allows instances to be
used as views. For example, consider the use of the old framework in
the following :ref:`URLconf <topics-http-urls>`::
from django.conf.urls.defaults import *
from myproject.feeds import LatestEntries, LatestEntriesByCategory
feeds = {
'latest': LatestEntries,
'categories': LatestEntriesByCategory,
}
urlpatterns = patterns('',
# ...
(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed',
{'feed_dict': feeds}),
# ...
)
Using the new Feed class, these feeds can be deployed directly as views::
from django.conf.urls.defaults import *
from myproject.feeds import LatestEntries, LatestEntriesByCategory
urlpatterns = patterns('',
# ...
(r'^feeds/latest/$', LatestEntries()),
(r'^feeds/categories/(?P<category_id>\d+)/$', LatestEntriesByCategory()),
# ...
)
If you currently use the ``feed()`` view, the ``LatestEntries`` class
would not need to be modified apart from subclassing the new
:class:`~django.contrib.syndication.views.Feed` class.
However, ``LatestEntriesByCategory`` uses the ``get_object()`` method
with the ``bits`` argument to specify a specific category to show. In
the new :class:`~django.contrib.syndication.views.Feed` class,
``get_object()`` method takes a ``request`` and arguments from the
URL, so it would look like this::
from django.contrib.syndication.views import Feed
from django.shortcuts import get_object_or_404
from myproject.models import Category
class LatestEntriesByCategory(Feed):
def get_object(self, request, category_id):
return get_object_or_404(Category, id=category_id)
# ...
Additionally, the ``get_feed()`` method on ``Feed`` classes now take
different arguments, which may impact you if you use the ``Feed``
classes directly. Instead of just taking an optional ``url`` argument,
it now takes two arguments: the object returned by its own
``get_object()`` method, and the current ``request`` object.
To take into account ``Feed`` classes not being initialized for each
request, the ``__init__()`` method now takes no arguments by default.
Previously it would have taken the ``slug`` from the URL and the
``request`` object.
In accordance with `RSS best practices`_, RSS feeds will now include
an ``atom:link`` element. You may need to update your tests to take
this into account.
Also, in accordance with `RSS best practices`_, RSS feeds will now
include an ``atom:link`` element. You may need to update your tests to
take this into account.
For more information, see the full :ref:`syndication framework
documentation <ref-contrib-syndication>`.
@ -131,12 +67,21 @@ Cookie encoding
---------------
Due to cookie-handling bugs in Internet Explorer, Safari, and possibly
other browsers, our encoding of cookie values was changed so that the
characters comma (',') and semi-colon (';') are treated as non-safe
characters, and are therefore encoded as ``\054`` and ``\073``
respectively. This could produce backwards incompatibilities if you
are relying on the ability to set these characters directly in cookie
values.
other browsers, Django's encoding of cookie values was changed so that
the characters comma (',') and semi-colon (';') are treated as
non-safe characters, and are therefore encoded as ``\054`` and
``\073`` respectively. This could produce backwards incompatibilities
if you are relying on the ability to set these characters directly in
cookie values.
What's new in 1.2 beta
======================
This 1.2 beta release marks the final feature freeze for Django 1.2;
while most feature development was completed for 1.2 alpha (which
constituted a freeze on major features), a few other new features were
added afterward and so are new as of 1.2 beta.
Object-level permissions
@ -163,6 +108,15 @@ is allowed or not to the authorization/authentication system. See the
:ref:`authentication docs <topics-auth>` for more details.
``select_related()`` improvements
---------------------------------
The ``select_related()`` method of ``QuerySet`` now accepts the
``related_name`` of a reverse one-to-one relation in the list of
fields to select. One-to-one relations will not, however, be traversed
by a depth-based ``select_related()`` call.
The Django 1.2 roadmap
======================