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:
parent
2638c90ce2
commit
f30f1514f3
|
@ -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
|
||||
======================
|
||||
|
||||
|
|
Loading…
Reference in New Issue