Adapted uses of versionchanged/versionadded to the new form.

Refs #20104.
This commit is contained in:
Juan Catalano 2013-03-24 22:53:48 -07:00 committed by Claude Paroz
parent 1ddeeb5b8e
commit 78c842a323
48 changed files with 206 additions and 148 deletions

View File

@ -66,7 +66,7 @@ class VersionDirective(Directive):
msg = """Only one argument accepted for directive '{directive_name}::'.
Comments should be provided as content,
not as an extra argument.""".format(directive_name=self.name)
raise ValueError(msg)
raise self.error(msg)
env = self.state.document.settings.env
ret = []

View File

@ -256,7 +256,7 @@ All attributes can be set in your derived class and can be used in
.. versionadded:: 1.6
The ``leave_locale_alone`` option was added in Django 1.6.
The ``leave_locale_alone`` option was added in Django 1.6.
Methods
-------

View File

@ -75,8 +75,8 @@ access to your precious data on a model by model basis.
.. versionchanged:: 1.6
The behavior by which introspected models are created as unmanaged ones is new
in Django 1.6.
The behavior by which introspected models are created as unmanaged ones is new
in Django 1.6.
Install the core Django tables
==============================

View File

@ -389,8 +389,8 @@ This is a new feature, so it should be documented. Add the following on line
.. versionadded:: 1.5
The current value of the field will be displayed as a clickable link above the
input widget.
The current value of the field will be displayed as a clickable link above the
input widget.
For more information on writing documentation, including an explanation of what
the ``versionadded`` bit is all about, see

View File

@ -105,6 +105,7 @@ TemplateView
in the URL.
.. versionchanged:: 1.5
The context used to be populated with a ``{{ params }}`` dictionary of
the parameters captured in the URL. Now those parameters are first-level
context variables.

View File

@ -142,7 +142,7 @@ YearArchiveView
.. versionchanged:: 1.5
Previously, this returned a string.
Previously, this returned a string.
* ``next_year``: A :class:`~datetime.date` object
representing the first day of the next year, according to

View File

@ -330,5 +330,6 @@ BaseDateListView
:meth:`QuerySet.dates()<django.db.models.query.QuerySet.dates>`.
.. versionchanged:: 1.5
The ``ordering`` parameter was added, and the default order was
changed to ascending.

View File

@ -206,10 +206,10 @@ ProcessFormView
.. versionadded:: 1.6
``success_url`` may contain dictionary string formatting, which
will be interpolated against the object's field attributes. For
example, you could use ``success_url="/parent/%(parent_id)s/"`` to
redirect to a URL composed out of the ``parent_id`` field on a model.
``success_url`` may contain dictionary string formatting, which
will be interpolated against the object's field attributes. For
example, you could use ``success_url="/parent/%(parent_id)s/"`` to
redirect to a URL composed out of the ``parent_id`` field on a model.
.. method:: get_success_url()

View File

@ -67,7 +67,6 @@ TemplateResponseMixin
.. attribute:: content_type
.. versionadded:: 1.5
The ``content_type`` attribute was added.
The content type to use for the response. ``content_type`` is passed
as a keyword argument to ``response_class``. Default is ``None`` --

View File

@ -62,6 +62,7 @@ To set the same ``X-Frame-Options`` value for all responses in your site, put
)
.. versionchanged:: 1.6
This middleware is enabled in the settings file generated by
:djadmin:`startproject`.

View File

@ -18,6 +18,7 @@ The admin is enabled in the default project template used by
:djadmin:`startproject`.
.. versionchanged:: 1.6
In previous versions, the admin wasn't enabled by default.
For reference, here are the requirements:
@ -1341,6 +1342,7 @@ templates used by the :class:`ModelAdmin` views:
return qs.filter(author=request.user)
.. versionchanged:: 1.6
The ``get_queryset`` method was previously named ``queryset``.
.. method:: ModelAdmin.message_user(request, message, level=messages.INFO, extra_tags='', fail_silently=False)
@ -1348,7 +1350,9 @@ templates used by the :class:`ModelAdmin` views:
Sends a message to the user using the :mod:`django.contrib.messages`
backend. See the :ref:`custom ModelAdmin example <custom-admin-action>`.
.. versionadded:: 1.5
.. versionchanged:: 1.5
Keyword arguments were added in Django 1.5.
Keyword arguments allow you to change the message level, add extra CSS
tags, or fail silently if the ``contrib.messages`` framework is not
@ -1451,6 +1455,7 @@ in your own admin JavaScript without including a second copy, you can use the
``django.jQuery`` object on changelist and add/edit views.
.. versionchanged:: 1.6
The embedded jQuery has been upgraded from 1.4.2 to 1.9.1.
The :class:`ModelAdmin` class requires jQuery by default, so there is no need

View File

@ -234,18 +234,18 @@ lookup::
.. versionadded:: 1.5
Prior to Django 1.5,
:meth:`~django.contrib.contenttypes.models.ContentTypeManager.get_for_model` and
:meth:`~django.contrib.contenttypes.models.ContentTypeManager.get_for_models`
always returned the :class:`~django.contrib.contenttypes.models.ContentType`
associated with the concrete model of the specified one(s). That means there
was no way to retrieve the
:class:`~django.contrib.contenttypes.models.ContentType` of a proxy model
using those methods. As of Django 1.5 you can now pass a boolean flag
``for_concrete_model`` and ``for_concrete_models`` respectively to specify
wether or not you want to retrieve the
:class:`~django.contrib.contenttypes.models.ContentType` for the concrete or
direct model.
Prior to Django 1.5,
:meth:`~django.contrib.contenttypes.models.ContentTypeManager.get_for_model` and
:meth:`~django.contrib.contenttypes.models.ContentTypeManager.get_for_models`
always returned the :class:`~django.contrib.contenttypes.models.ContentType`
associated with the concrete model of the specified one(s). That means there
was no way to retrieve the
:class:`~django.contrib.contenttypes.models.ContentType` of a proxy model
using those methods. As of Django 1.5 you can now pass a boolean flag
``for_concrete_model`` and ``for_concrete_models`` respectively to specify
wether or not you want to retrieve the
:class:`~django.contrib.contenttypes.models.ContentType` for the concrete or
direct model.
Generic relations
=================

View File

@ -950,6 +950,7 @@ __ http://geohash.org/
*Availability*: PostGIS, SpatiaLite
.. versionchanged:: 1.5
``geojson`` support for Spatialite > 3.0 has been added.
Attaches a ``geojson`` attribute to every model in the queryset that contains the

View File

@ -252,6 +252,7 @@ Enabling the sites framework
============================
.. versionchanged:: 1.6
In previous versions, the sites framework was enabled by default.
To enable the sites framework, follow these steps:

View File

@ -182,6 +182,7 @@ Django supports MySQL 5.0.3 and higher.
data on all database schema. Django's ``inspectdb`` feature uses it.
.. versionchanged:: 1.5
The minimum version requirement of MySQL 5.0.3 was set in Django 1.5.
Django expects the database to support Unicode (UTF-8 encoding) and delegates to

View File

@ -98,6 +98,7 @@ Can be run as a cronjob or directly to clean out old data from the database
(only expired sessions at the moment).
.. versionchanged:: 1.5
:djadmin:`cleanup` is deprecated. Use :djadmin:`clearsessions` instead.
compilemessages
@ -122,7 +123,7 @@ Example usage::
.. versionchanged:: 1.6
Added the ability to specify multiple locales.
Added the ability to specify multiple locales.
createcachetable
----------------
@ -173,6 +174,7 @@ The :djadminopt:`--all` option may be provided to display all settings, even
if they have Django's default value. Such settings are prefixed by ``"###"``.
.. versionadded:: 1.6
The :djadminopt:`--all` option was added.
dumpdata <appname appname appname.Model ...>
@ -307,8 +309,8 @@ database to introspect.
.. versionchanged:: 1.6
The behavior by which introspected models are created as unmanaged ones is new
in Django 1.6.
The behavior by which introspected models are created as unmanaged ones is new
in Django 1.6.
loaddata <fixture fixture ...>
------------------------------
@ -467,7 +469,7 @@ You can also use commas to separate multiple locales::
.. versionchanged:: 1.6
Added the ability to specify multiple locales.
Added the ability to specify multiple locales.
.. django-admin-option:: --domain
@ -778,8 +780,6 @@ use the ``--plain`` option, like so::
django-admin.py shell --plain
.. versionchanged:: 1.5
If you would like to specify either IPython or bpython as your interpreter if
you have both installed you can specify an alternative interpreter interface
with the ``-i`` or ``--interface`` options like so:
@ -807,9 +807,13 @@ behavior you can use the ``--no-startup`` option. e.g.::
django-admin.py shell --plain --no-startup
.. versionadded:: 1.5
The ``--interface`` option was added in Django 1.5.
.. versionadded:: 1.6
The ``--no-startup`` option was added in Django 1.6.
The ``--no-startup`` option was added in Django 1.6.
sql <appname appname ...>
-------------------------
@ -1353,6 +1357,7 @@ for any other exception. If you specify ``--traceback``, ``django-admin.py``
will also output a full stack trace when a ``CommandError`` is raised.
.. versionchanged:: 1.6
Previously, Django didn't show a full stack trace by default for exceptions
other than ``CommandError``.

View File

@ -138,6 +138,7 @@ the underlying database exceptions. See :pep:`249`, the Python Database API
Specification v2.0, for further information.
.. versionchanged:: 1.6
Previous version of Django only wrapped ``DatabaseError`` and
``IntegrityError``.

View File

@ -468,6 +468,7 @@ For each field, we describe the default widget used if you don't specify
``%(limit_value)s``, which will be substituted by the appropriate limit.
.. versionchanged:: 1.6
Similarly, the ``max_digits``, ``max_decimal_places`` and
``max_whole_digits`` error messages may contain ``%(max)s``.
@ -1014,10 +1015,12 @@ objects (in the case of ``ModelMultipleChoiceField``) into the
``invalid_pk_value``
.. versionchanged:: 1.5
The empty and normalized values were changed to be consistently
``QuerySets`` instead of ``[]`` and ``QuerySet`` respectively.
.. versionchanged:: 1.6
The ``invalid_choice`` message may contain ``%(value)s`` and the
``invalid_pk_value`` message may contain ``%(pk)s``, which will be
substituted by the appropriate values.

View File

@ -42,7 +42,7 @@ Model Form Functions
.. versionchanged:: 1.6
The ``widgets`` and the ``validate_max`` parameters were added.
The ``widgets`` and the ``validate_max`` parameters were added.
.. function:: inlineformset_factory(parent_model, model, form=ModelForm, formset=BaseInlineFormSet, fk_name=None, fields=None, exclude=None, extra=3, can_order=False, can_delete=True, max_num=None, formfield_callback=None, widgets=None, validate_max=False)
@ -57,4 +57,4 @@ Model Form Functions
.. versionchanged:: 1.6
The ``widgets`` and the ``validate_max`` parameters were added.
The ``widgets`` and the ``validate_max`` parameters were added.

View File

@ -359,7 +359,7 @@ considering aren't valid, we must remember to remove them from the
.. versionchanged:: 1.5
Django used to remove the ``cleaned_data`` attribute entirely if there were
any errors in the form. Since version 1.5, ``cleaned_data`` is present even if
the form doesn't validate, but it contains only field values that did
validate.
Django used to remove the ``cleaned_data`` attribute entirely if there were
any errors in the form. Since version 1.5, ``cleaned_data`` is present even if
the form doesn't validate, but it contains only field values that did
validate.

View File

@ -522,6 +522,7 @@ Selector and checkbox widgets
``True`` if the checkbox should be checked for that value.
.. versionchanged:: 1.5
Exceptions from ``check_test`` used to be silenced by its caller,
this is no longer the case, they will propagate upwards.

View File

@ -206,6 +206,7 @@ Transaction middleware
.. class:: TransactionMiddleware
.. versionchanged:: 1.6
``TransactionMiddleware`` is deprecated. The documentation of transactions
contains :ref:`upgrade instructions <transactions-upgrading-from-1.5>`.

View File

@ -378,6 +378,7 @@ If you need to accept :attr:`~Field.null` values then use
:class:`NullBooleanField` instead.
.. versionchanged:: 1.6
The default value of ``BooleanField`` was changed from ``False`` to
``None`` when :attr:`Field.default` isn't defined.
@ -956,8 +957,8 @@ Like all :class:`CharField` subclasses, :class:`URLField` takes the optional
.. versionadded:: 1.5
The current value of the field will be displayed as a clickable link above the
input widget.
The current value of the field will be displayed as a clickable link above the
input widget.
Relationship fields

View File

@ -297,8 +297,9 @@ follows this algorithm:
didn't update anything, Django executes an ``INSERT``.
.. versionchanged:: 1.6
Previously Django used ``SELECT`` - if not found ``INSERT`` else ``UPDATE``
algorithm. The old algorithm resulted in one more query in ``UPDATE`` case.
Previously Django used ``SELECT`` - if not found ``INSERT`` else ``UPDATE``
algorithm. The old algorithm resulted in one more query in ``UPDATE`` case.
The one gotcha here is that you should be careful not to specify a primary-key
value explicitly when saving new objects, if you cannot guarantee the

View File

@ -554,11 +554,13 @@ Returns a ``DateQuerySet`` — a ``QuerySet`` that evaluates to a list of
particular kind within the contents of the ``QuerySet``.
.. versionchanged:: 1.6
``dates`` used to return a list of :class:`datetime.datetime` objects.
``field`` should be the name of a ``DateField`` of your model.
.. versionchanged:: 1.6
``dates`` used to accept operating on a ``DateTimeField``.
``kind`` should be either ``"year"``, ``"month"`` or ``"day"``. Each
@ -1121,11 +1123,11 @@ to ``defer()``::
.. versionchanged:: 1.5
Some fields in a model won't be deferred, even if you ask for them. You can
never defer the loading of the primary key. If you are using
:meth:`select_related()` to retrieve related models, you shouldn't defer the
loading of the field that connects from the primary model to the related
one, doing so will result in an error.
Some fields in a model won't be deferred, even if you ask for them. You can
never defer the loading of the primary key. If you are using
:meth:`select_related()` to retrieve related models, you shouldn't defer the
loading of the field that connects from the primary model to the related
one, doing so will result in an error.
.. note::
@ -1193,20 +1195,20 @@ logically::
# existing set of fields).
Entry.objects.defer("body").only("headline", "body")
.. versionchanged:: 1.5
All of the cautions in the note for the :meth:`defer` documentation apply to
``only()`` as well. Use it cautiously and only after exhausting your other
options. Also note that using :meth:`only` and omitting a field requested
using :meth:`select_related` is an error as well.
options.
.. versionchanged:: 1.5
.. note::
Using :meth:`only` and omitting a field requested using
:meth:`select_related` is an error as well.
When calling :meth:`~django.db.models.Model.save()` for instances with
deferred fields, only the loaded fields will be saved. See
:meth:`~django.db.models.Model.save()` for more details.
.. note::
When calling :meth:`~django.db.models.Model.save()` for instances with
deferred fields, only the loaded fields will be saved. See
:meth:`~django.db.models.Model.save()` for more details.
using
~~~~~
@ -1424,6 +1426,7 @@ query. The default is to create all objects in one batch, except for SQLite
where the default is such that at maximum 999 variables per query is used.
.. versionadded:: 1.5
The ``batch_size`` parameter was added in version 1.5.
count
@ -1725,7 +1728,8 @@ methods on your models. It does, however, emit the
(including cascaded deletions).
.. versionadded:: 1.5
Allow fast-path deletion of objects
Allow fast-path deletion of objects.
Django needs to fetch objects into memory to send signals and handle cascades.
However, if there are no cascades and no signals, then Django may take a

View File

@ -94,6 +94,7 @@ All attributes should be considered read-only, unless stated otherwise below.
:attr:`HttpRequest.body` attribute instead.
.. versionchanged:: 1.5
Before Django 1.5, HttpRequest.POST contained non-form data.
It's possible that a request can come in via POST with an empty ``POST``
@ -563,19 +564,19 @@ streaming response if (and only if) no middleware accesses the
.. versionchanged:: 1.5
This technique is fragile and was deprecated in Django 1.5. If you need the
response to be streamed from the iterator to the client, you should use the
:class:`StreamingHttpResponse` class instead.
This technique is fragile and was deprecated in Django 1.5. If you need the
response to be streamed from the iterator to the client, you should use the
:class:`StreamingHttpResponse` class instead.
As of Django 1.7, when :class:`HttpResponse` is instantiated with an
iterator, it will consume it immediately, store the response content as a
string, and discard the iterator.
As of Django 1.7, when :class:`HttpResponse` is instantiated with an
iterator, it will consume it immediately, store the response content as a
string, and discard the iterator.
.. versionchanged:: 1.5
You can now use :class:`HttpResponse` as a file-like object even if it was
instantiated with an iterator. Django will consume and save the content of
the iterator on first access.
You can now use :class:`HttpResponse` as a file-like object even if it was
instantiated with an iterator. Django will consume and save the content of
the iterator on first access.
Setting headers
~~~~~~~~~~~~~~~

View File

@ -1486,6 +1486,7 @@ randomly-generated ``SECRET_KEY`` to each new project.
execution vulnerabilities.
.. versionchanged:: 1.5
Django will now refuse to start if :setting:`SECRET_KEY` is not set.
.. setting:: SECURE_PROXY_SSL_HEADER
@ -1771,7 +1772,7 @@ See also :setting:`DATE_INPUT_FORMATS` and :setting:`DATETIME_INPUT_FORMATS`.
.. versionchanged:: 1.6
Input format with microseconds has been added.
Input format with microseconds has been added.
.. _datetime: http://docs.python.org/library/datetime.html#strftime-strptime-behavior
@ -2055,11 +2056,11 @@ decorator, for example.
.. versionchanged:: 1.5
This setting now also accepts view function names and
:ref:`named URL patterns <naming-url-patterns>` which can be used to reduce
configuration duplication since you no longer have to define the URL in two
places (``settings`` and URLconf).
For backward compatibility reasons the default remains unchanged.
This setting now also accepts view function names and
:ref:`named URL patterns <naming-url-patterns>` which can be used to reduce
configuration duplication since you no longer have to define the URL in two
places (``settings`` and URLconf).
For backward compatibility reasons the default remains unchanged.
.. setting:: LOGIN_URL
@ -2073,11 +2074,11 @@ The URL where requests are redirected for login, especially when using the
.. versionchanged:: 1.5
This setting now also accepts view function names and
:ref:`named URL patterns <naming-url-patterns>` which can be used to reduce
configuration duplication since you no longer have to define the URL in two
places (``settings`` and URLconf).
For backward compatibility reasons the default remains unchanged.
This setting now also accepts view function names and
:ref:`named URL patterns <naming-url-patterns>` which can be used to reduce
configuration duplication since you no longer have to define the URL in two
places (``settings`` and URLconf).
For backward compatibility reasons the default remains unchanged.
.. setting:: LOGOUT_URL

View File

@ -78,13 +78,13 @@ Methods
.. versionchanged:: 1.5
Historically, this parameter was only called ``mimetype`` (now
deprecated), but since this is actually the value included in the HTTP
``Content-Type`` header, it can also include the character set
encoding, which makes it more than just a MIME type specification. If
``mimetype`` is specified (not ``None``), that value is used.
Otherwise, ``content_type`` is used. If neither is given,
:setting:`DEFAULT_CONTENT_TYPE` is used.
Historically, this parameter was only called ``mimetype`` (now
deprecated), but since this is actually the value included in the HTTP
``Content-Type`` header, it can also include the character set
encoding, which makes it more than just a MIME type specification. If
``mimetype`` is specified (not ``None``), that value is used.
Otherwise, ``content_type`` is used. If neither is given,
:setting:`DEFAULT_CONTENT_TYPE` is used.
.. method:: SimpleTemplateResponse.resolve_context(context)

View File

@ -272,6 +272,7 @@ Every context contains ``True``, ``False`` and ``None``. As you would expect,
these variables resolve to the corresponding Python objects.
.. versionadded:: 1.5
Before Django 1.5, these variables weren't a special case, and they
resolved to ``None`` unless you defined them in the context.

View File

@ -191,19 +191,19 @@ call to ``{% cycle %}`` doesn't specify silent::
.. versionchanged:: 1.6
To improve safety, future versions of ``cycle`` will automatically escape
their output. You're encouraged to activate this behavior by loading
``cycle`` from the ``future`` template library::
To improve safety, future versions of ``cycle`` will automatically escape
their output. You're encouraged to activate this behavior by loading
``cycle`` from the ``future`` template library::
{% load cycle from future %}
{% load cycle from future %}
When using the ``future`` version, you can disable auto-escaping with::
When using the ``future`` version, you can disable auto-escaping with::
{% for o in some_list %}
<tr class="{% autoescape off %}{% cycle rowvalue1 rowvalue2 %}{% endautoescape %}">
...
</tr>
{% endfor %}
{% for o in some_list %}
<tr class="{% autoescape off %}{% cycle rowvalue1 rowvalue2 %}{% endautoescape %}">
...
</tr>
{% endfor %}
.. templatetag:: debug
@ -294,21 +294,21 @@ to escape the variables in the firstof tag, you must do so explicitly::
.. versionchanged:: 1.6
To improve safety, future versions of ``firstof`` will automatically escape
their output. You're encouraged to activate this behavior by loading
``firstof`` from the ``future`` template library::
To improve safety, future versions of ``firstof`` will automatically escape
their output. You're encouraged to activate this behavior by loading
``firstof`` from the ``future`` template library::
{% load firstof from future %}
{% load firstof from future %}
When using the ``future`` version, you can disable auto-escaping with::
When using the ``future`` version, you can disable auto-escaping with::
{% autoescape off %}
{% firstof var1 var2 var3 "<strong>fallback value</strong>" %}
{% endautoescape %}
{% autoescape off %}
{% firstof var1 var2 var3 "<strong>fallback value</strong>" %}
{% endautoescape %}
Or if only some variables should be escaped, you can use::
Or if only some variables should be escaped, you can use::
{% firstof var1 var2|safe var3 "<strong>fallback value</strong>"|safe %}
{% firstof var1 var2|safe var3 "<strong>fallback value</strong>"|safe %}
.. templatetag:: for
@ -1065,6 +1065,7 @@ by the context as to the current application.
Don't forget to put quotes around the function path or pattern name!
.. versionchanged:: 1.5
The first parameter used not to be quoted, which was inconsistent with
other template tags. Since Django 1.5, it is evaluated according to
the usual rules: it can be a quoted string or a variable that will be

View File

@ -47,26 +47,26 @@ You can use Unicode strings, or you can use normal strings (sometimes called
.. versionchanged:: 1.5
In Python 3, the logic is reversed, that is normal strings are Unicode, and
when you want to specifically create a bytestring, you have to prefix the
string with a 'b'. As we are doing in Django code from version 1.5,
we recommend that you import ``unicode_literals`` from the __future__ library
in your code. Then, when you specifically want to create a bytestring literal,
prefix the string with 'b'.
In Python 3, the logic is reversed, that is normal strings are Unicode, and
when you want to specifically create a bytestring, you have to prefix the
string with a 'b'. As we are doing in Django code from version 1.5,
we recommend that you import ``unicode_literals`` from the __future__ library
in your code. Then, when you specifically want to create a bytestring literal,
prefix the string with 'b'.
Python 2 legacy::
Python 2 legacy::
my_string = "This is a bytestring"
my_unicode = u"This is an Unicode string"
my_string = "This is a bytestring"
my_unicode = u"This is an Unicode string"
Python 2 with unicode literals or Python 3::
Python 2 with unicode literals or Python 3::
from __future__ import unicode_literals
from __future__ import unicode_literals
my_string = b"This is a bytestring"
my_unicode = "This is an Unicode string"
my_string = b"This is a bytestring"
my_unicode = "This is an Unicode string"
See also :doc:`Python 3 compatibility </topics/python3>`.
See also :doc:`Python 3 compatibility </topics/python3>`.
.. warning::

View File

@ -66,6 +66,7 @@ We can't possibly document everything that's new in 1.0, but the documentation
will be your definitive guide. Anywhere you see something like:
.. versionadded:: 1.0
This feature is new in Django 1.0
You'll know that you're looking at something new or changed.

View File

@ -83,9 +83,9 @@ processing at the first positive match.
.. versionadded:: 1.6
If a backend raises a :class:`~django.core.exceptions.PermissionDenied`
exception, authentication will immediately fail. Django won't check the
backends that follow.
If a backend raises a :class:`~django.core.exceptions.PermissionDenied`
exception, authentication will immediately fail. Django won't check the
backends that follow.
Writing an authentication backend
---------------------------------

View File

@ -435,10 +435,10 @@ The login_required decorator
.. versionchanged:: 1.5
The :setting:`settings.LOGIN_URL <LOGIN_URL>` also accepts
view function names and :ref:`named URL patterns <naming-url-patterns>`.
This allows you to freely remap your login view within your URLconf
without having to update the setting.
The :setting:`settings.LOGIN_URL <LOGIN_URL>` also accepts
view function names and :ref:`named URL patterns <naming-url-patterns>`.
This allows you to freely remap your login view within your URLconf
without having to update the setting.
.. note::
@ -759,6 +759,7 @@ patterns.
mail will be sent either.
.. versionchanged:: 1.6
Previously, error messages indicated whether a given email was
registered.
@ -1041,6 +1042,7 @@ Thus, you can check permissions in template ``{% if %}`` statements:
{% endif %}
.. versionadded:: 1.5
Permission lookup by "if in".
It is possible to also look permissions up by ``{% if in %}`` statements.

View File

@ -176,6 +176,7 @@ your choice of default manager in order to avoid a situation where overriding
work with.
.. versionchanged:: 1.6
The ``get_queryset`` method was previously named ``get_query_set``.
.. _managers-for-related-objects:

View File

@ -681,6 +681,7 @@ In addition, some objects are automatically created just after
database).
.. versionchanged:: 1.5
Previously, ``ContentType`` and ``Permission`` instances were created only
in the default database.

View File

@ -638,6 +638,7 @@ that were modified more than 3 days after they were published::
>>> Entry.objects.filter(mod_date__gt=F('pub_date') + timedelta(days=3))
.. versionadded:: 1.5
``.bitand()`` and ``.bitor()``
The ``F()`` objects now support bitwise operations by ``.bitand()`` and
@ -646,6 +647,7 @@ The ``F()`` objects now support bitwise operations by ``.bitand()`` and
>>> F('somefield').bitand(16)
.. versionchanged:: 1.5
The previously undocumented operators ``&`` and ``|`` no longer produce
bitwise operations, use ``.bitand()`` and ``.bitor()`` instead.

View File

@ -222,6 +222,7 @@ For example::
return row
.. versionchanged:: 1.6
In Django 1.5 and earlier, after performing a data changing operation, you
had to call ``transaction.commit_unless_managed()`` to ensure your changes
were committed to the database. Since Django now defaults to database-level

View File

@ -22,6 +22,7 @@ integrity of ORM operations that require multiple queries, especially
<topics-db-queries-update>` queries.
.. versionchanged:: 1.6
Previous version of Django featured :ref:`a more complicated default
behavior <transactions-upgrading-from-1.5>`.
@ -78,6 +79,7 @@ Middleware run outside of the transaction, and so does the rendering of
template responses.
.. versionchanged:: 1.6
Django used to provide this feature via ``TransactionMiddleware``, which is
now deprecated.
@ -204,6 +206,7 @@ To avoid this, you can :ref:`deactivate the transaction management
<deactivate-transaction-management>`, but it isn't recommended.
.. versionchanged:: 1.6
Before Django 1.6, autocommit was turned off, and it was emulated by
forcing a commit after write operations in the ORM.
@ -224,6 +227,7 @@ where you want to run your own transaction-controlling middleware or do
something really strange.
.. versionchanged:: 1.6
This used to be controlled by the ``TRANSACTIONS_MANAGED`` setting.
Low-level APIs
@ -312,10 +316,10 @@ rollback that would be performed by ``transaction.rollback()``.
.. versionchanged:: 1.6
When the :func:`atomic` decorator is nested, it creates a savepoint to allow
partial commit or rollback. You're strongly encouraged to use :func:`atomic`
rather than the functions described below, but they're still part of the
public API, and there's no plan to deprecate them.
When the :func:`atomic` decorator is nested, it creates a savepoint to allow
partial commit or rollback. You're strongly encouraged to use :func:`atomic`
rather than the functions described below, but they're still part of the
public API, and there's no plan to deprecate them.
Each of these functions takes a ``using`` argument which should be the name of
a database for which the behavior applies. If no ``using`` argument is
@ -354,20 +358,20 @@ The following example demonstrates the use of savepoints::
@transaction.atomic
def viewfunc(request):
a.save()
# transaction now contains a.save()
a.save()
# transaction now contains a.save()
sid = transaction.savepoint()
sid = transaction.savepoint()
b.save()
# transaction now contains a.save() and b.save()
b.save()
# transaction now contains a.save() and b.save()
if want_to_keep_b:
transaction.savepoint_commit(sid)
# open transaction still contains a.save() and b.save()
else:
transaction.savepoint_rollback(sid)
# open transaction now contains only a.save()
if want_to_keep_b:
transaction.savepoint_commit(sid)
# open transaction still contains a.save() and b.save()
else:
transaction.savepoint_rollback(sid)
# open transaction now contains only a.save()
Database-specific notes
=======================

View File

@ -111,6 +111,7 @@ affect validation. If ``validate_max=True`` is passed to the
validation. See :ref:`validate_max`.
.. versionchanged:: 1.6
The ``validate_max`` parameter was added to
:func:`~django.forms.formsets.formset_factory`. Also, the behavior of
``FormSet`` was brought in line with that of ``ModelFormSet`` so that it
@ -310,6 +311,7 @@ should use custom formset validation.
using forged POST requests.
.. versionchanged:: 1.6
The ``validate_max`` parameter was added to
:func:`~django.forms.formsets.formset_factory`.

View File

@ -204,6 +204,7 @@ Dealing with streaming responses
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. versionchanged:: 1.5
``response`` may also be an :class:`~django.http.StreamingHttpResponse`
object.

View File

@ -71,6 +71,7 @@ default cache. To use another cache, set :setting:`SESSION_CACHE_ALIAS` to the
name of that cache.
.. versionchanged:: 1.5
The :setting:`SESSION_CACHE_ALIAS` setting was added.
Once your cache is configured, you've got two choices for how to store data in
@ -451,6 +452,7 @@ Similarly, the ``expires`` part of a session cookie is updated each time the
session cookie is sent.
.. versionchanged:: 1.5
The session is not saved if the response's status code is 500.
.. _browser-length-vs-persistent-sessions:

View File

@ -51,6 +51,7 @@ Optional arguments
the :setting:`DEFAULT_CONTENT_TYPE` setting.
.. versionchanged:: 1.5
This parameter used to be called ``mimetype``.
``status``
@ -129,6 +130,7 @@ Optional arguments
the :setting:`DEFAULT_CONTENT_TYPE` setting.
.. versionchanged:: 1.5
This parameter used to be called ``mimetype``.

View File

@ -1529,6 +1529,7 @@ selection based on data from the request. It customizes content for each user.
``'django.middleware.locale.LocaleMiddleware'``.
.. versionchanged:: 1.6
In previous versions, ``LocaleMiddleware`` wasn't enabled by default.
Because middleware order matters, you should follow these guidelines:

View File

@ -252,7 +252,7 @@ Methods
.. versionchanged:: 1.5
Raises :exc:`InvalidPage` if next page doesn't exist.
Raises :exc:`InvalidPage` if next page doesn't exist.
.. method:: Page.previous_page_number()
@ -260,7 +260,7 @@ Methods
.. versionchanged:: 1.5
Raises :exc:`InvalidPage` if previous page doesn't exist.
Raises :exc:`InvalidPage` if previous page doesn't exist.
.. method:: Page.start_index()

View File

@ -124,8 +124,8 @@ Calling ``DeserializedObject.save()`` saves the object to the database.
.. versionchanged:: 1.6
In previous versions of Django, the ``pk`` attribute had to be present
on the serialized data or a ``DeserializationError`` would be raised.
In previous versions of Django, the ``pk`` attribute had to be present
on the serialized data or a ``DeserializationError`` would be raised.
This ensures that deserializing is a non-destructive operation even if the
data in your serialized representation doesn't match what's currently in the
@ -144,11 +144,11 @@ The Django object itself can be inspected as ``deserialized_object.object``.
.. versionadded:: 1.5
If fields in the serialized data do not exist on a model,
a ``DeserializationError`` will be raised unless the ``ignorenonexistent``
argument is passed in as True::
If fields in the serialized data do not exist on a model,
a ``DeserializationError`` will be raised unless the ``ignorenonexistent``
argument is passed in as True::
serializers.deserialize("xml", data, ignorenonexistent=True)
serializers.deserialize("xml", data, ignorenonexistent=True)
.. _serialization-formats:

View File

@ -134,7 +134,7 @@ to.
.. versionchanged:: 1.5
The ability to pass a list of signals was added.
The ability to pass a list of signals was added.
.. admonition:: Where should this code live?

View File

@ -235,6 +235,7 @@ the Django test runner reorders tests in the following way:
restoring it to its original state are run.
.. versionchanged:: 1.5
Before Django 1.5, the only guarantee was that
:class:`~django.test.TestCase` tests were always ran first, before any other
tests.
@ -612,6 +613,7 @@ Use the ``django.test.client.Client`` class to make requests.
a ``Content-Type`` header is set to ``content_type``.
.. versionchanged:: 1.5
:meth:`Client.options` used to process ``data`` like
:meth:`Client.get`.
@ -627,6 +629,7 @@ Use the ``django.test.client.Client`` class to make requests.
a ``Content-Type`` header is set to ``content_type``.
.. versionchanged:: 1.5
:meth:`Client.put` used to process ``data`` like
:meth:`Client.post`.
@ -650,6 +653,7 @@ Use the ``django.test.client.Client`` class to make requests.
a ``Content-Type`` header is set to ``content_type``.
.. versionchanged:: 1.5
:meth:`Client.delete` used to process ``data`` like
:meth:`Client.get`.
@ -940,6 +944,7 @@ to test the effects of commit and rollback:
the test has been properly updated.
.. versionchanged:: 1.5
The order in which tests are run has changed. See `Order in which tests are
executed`_.
@ -990,6 +995,7 @@ additions, including:
errors.
.. versionchanged:: 1.5
The order in which tests are run has changed. See `Order in which tests are
executed`_.
@ -1581,6 +1587,7 @@ your test suite.
``False``, which turns the comparison into a Python set comparison.
.. versionchanged:: 1.6
The method now checks for undefined order and raises ``ValueError``
if undefined order is spotted. The ordering is seen as undefined if
the given ``qs`` isn't ordered and the comparison is against more