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}::'. msg = """Only one argument accepted for directive '{directive_name}::'.
Comments should be provided as content, Comments should be provided as content,
not as an extra argument.""".format(directive_name=self.name) not as an extra argument.""".format(directive_name=self.name)
raise ValueError(msg) raise self.error(msg)
env = self.state.document.settings.env env = self.state.document.settings.env
ret = [] ret = []

View File

@ -256,7 +256,7 @@ All attributes can be set in your derived class and can be used in
.. versionadded:: 1.6 .. 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 Methods
------- -------

View File

@ -75,8 +75,8 @@ access to your precious data on a model by model basis.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
The behavior by which introspected models are created as unmanaged ones is new The behavior by which introspected models are created as unmanaged ones is new
in Django 1.6. in Django 1.6.
Install the core Django tables 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 .. versionadded:: 1.5
The current value of the field will be displayed as a clickable link above the The current value of the field will be displayed as a clickable link above the
input widget. input widget.
For more information on writing documentation, including an explanation of what For more information on writing documentation, including an explanation of what
the ``versionadded`` bit is all about, see the ``versionadded`` bit is all about, see

View File

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

View File

@ -142,7 +142,7 @@ YearArchiveView
.. versionchanged:: 1.5 .. versionchanged:: 1.5
Previously, this returned a string. Previously, this returned a string.
* ``next_year``: A :class:`~datetime.date` object * ``next_year``: A :class:`~datetime.date` object
representing the first day of the next year, according to 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>`. :meth:`QuerySet.dates()<django.db.models.query.QuerySet.dates>`.
.. versionchanged:: 1.5 .. versionchanged:: 1.5
The ``ordering`` parameter was added, and the default order was The ``ordering`` parameter was added, and the default order was
changed to ascending. changed to ascending.

View File

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

View File

@ -67,7 +67,6 @@ TemplateResponseMixin
.. attribute:: content_type .. attribute:: content_type
.. versionadded:: 1.5 .. versionadded:: 1.5
The ``content_type`` attribute was added.
The content type to use for the response. ``content_type`` is passed The content type to use for the response. ``content_type`` is passed
as a keyword argument to ``response_class``. Default is ``None`` -- 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 .. versionchanged:: 1.6
This middleware is enabled in the settings file generated by This middleware is enabled in the settings file generated by
:djadmin:`startproject`. :djadmin:`startproject`.

View File

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

View File

@ -234,18 +234,18 @@ lookup::
.. versionadded:: 1.5 .. versionadded:: 1.5
Prior to Django 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_model` and
:meth:`~django.contrib.contenttypes.models.ContentTypeManager.get_for_models` :meth:`~django.contrib.contenttypes.models.ContentTypeManager.get_for_models`
always returned the :class:`~django.contrib.contenttypes.models.ContentType` always returned the :class:`~django.contrib.contenttypes.models.ContentType`
associated with the concrete model of the specified one(s). That means there associated with the concrete model of the specified one(s). That means there
was no way to retrieve the was no way to retrieve the
:class:`~django.contrib.contenttypes.models.ContentType` of a proxy model :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 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 ``for_concrete_model`` and ``for_concrete_models`` respectively to specify
wether or not you want to retrieve the wether or not you want to retrieve the
:class:`~django.contrib.contenttypes.models.ContentType` for the concrete or :class:`~django.contrib.contenttypes.models.ContentType` for the concrete or
direct model. direct model.
Generic relations Generic relations
================= =================

View File

@ -950,6 +950,7 @@ __ http://geohash.org/
*Availability*: PostGIS, SpatiaLite *Availability*: PostGIS, SpatiaLite
.. versionchanged:: 1.5 .. versionchanged:: 1.5
``geojson`` support for Spatialite > 3.0 has been added. ``geojson`` support for Spatialite > 3.0 has been added.
Attaches a ``geojson`` attribute to every model in the queryset that contains the 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 .. versionchanged:: 1.6
In previous versions, the sites framework was enabled by default. In previous versions, the sites framework was enabled by default.
To enable the sites framework, follow these steps: 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. data on all database schema. Django's ``inspectdb`` feature uses it.
.. versionchanged:: 1.5 .. versionchanged:: 1.5
The minimum version requirement of MySQL 5.0.3 was set in Django 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 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). (only expired sessions at the moment).
.. versionchanged:: 1.5 .. versionchanged:: 1.5
:djadmin:`cleanup` is deprecated. Use :djadmin:`clearsessions` instead. :djadmin:`cleanup` is deprecated. Use :djadmin:`clearsessions` instead.
compilemessages compilemessages
@ -122,7 +123,7 @@ Example usage::
.. versionchanged:: 1.6 .. versionchanged:: 1.6
Added the ability to specify multiple locales. Added the ability to specify multiple locales.
createcachetable 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 ``"###"``. if they have Django's default value. Such settings are prefixed by ``"###"``.
.. versionadded:: 1.6 .. versionadded:: 1.6
The :djadminopt:`--all` option was added. The :djadminopt:`--all` option was added.
dumpdata <appname appname appname.Model ...> dumpdata <appname appname appname.Model ...>
@ -307,8 +309,8 @@ database to introspect.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
The behavior by which introspected models are created as unmanaged ones is new The behavior by which introspected models are created as unmanaged ones is new
in Django 1.6. in Django 1.6.
loaddata <fixture fixture ...> loaddata <fixture fixture ...>
------------------------------ ------------------------------
@ -467,7 +469,7 @@ You can also use commas to separate multiple locales::
.. versionchanged:: 1.6 .. versionchanged:: 1.6
Added the ability to specify multiple locales. Added the ability to specify multiple locales.
.. django-admin-option:: --domain .. django-admin-option:: --domain
@ -778,8 +780,6 @@ use the ``--plain`` option, like so::
django-admin.py shell --plain django-admin.py shell --plain
.. versionchanged:: 1.5
If you would like to specify either IPython or bpython as your interpreter if 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 you have both installed you can specify an alternative interpreter interface
with the ``-i`` or ``--interface`` options like so: 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 django-admin.py shell --plain --no-startup
.. versionadded:: 1.5
The ``--interface`` option was added in Django 1.5.
.. versionadded:: 1.6 .. 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 ...> 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. will also output a full stack trace when a ``CommandError`` is raised.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
Previously, Django didn't show a full stack trace by default for exceptions Previously, Django didn't show a full stack trace by default for exceptions
other than ``CommandError``. 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. Specification v2.0, for further information.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
Previous version of Django only wrapped ``DatabaseError`` and Previous version of Django only wrapped ``DatabaseError`` and
``IntegrityError``. ``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. ``%(limit_value)s``, which will be substituted by the appropriate limit.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
Similarly, the ``max_digits``, ``max_decimal_places`` and Similarly, the ``max_digits``, ``max_decimal_places`` and
``max_whole_digits`` error messages may contain ``%(max)s``. ``max_whole_digits`` error messages may contain ``%(max)s``.
@ -1014,10 +1015,12 @@ objects (in the case of ``ModelMultipleChoiceField``) into the
``invalid_pk_value`` ``invalid_pk_value``
.. versionchanged:: 1.5 .. versionchanged:: 1.5
The empty and normalized values were changed to be consistently The empty and normalized values were changed to be consistently
``QuerySets`` instead of ``[]`` and ``QuerySet`` respectively. ``QuerySets`` instead of ``[]`` and ``QuerySet`` respectively.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
The ``invalid_choice`` message may contain ``%(value)s`` and the The ``invalid_choice`` message may contain ``%(value)s`` and the
``invalid_pk_value`` message may contain ``%(pk)s``, which will be ``invalid_pk_value`` message may contain ``%(pk)s``, which will be
substituted by the appropriate values. substituted by the appropriate values.

View File

@ -42,7 +42,7 @@ Model Form Functions
.. versionchanged:: 1.6 .. 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) .. 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 .. 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 .. versionchanged:: 1.5
Django used to remove the ``cleaned_data`` attribute entirely if there were 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 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 the form doesn't validate, but it contains only field values that did
validate. validate.

View File

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

View File

@ -206,6 +206,7 @@ Transaction middleware
.. class:: TransactionMiddleware .. class:: TransactionMiddleware
.. versionchanged:: 1.6 .. versionchanged:: 1.6
``TransactionMiddleware`` is deprecated. The documentation of transactions ``TransactionMiddleware`` is deprecated. The documentation of transactions
contains :ref:`upgrade instructions <transactions-upgrading-from-1.5>`. 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. :class:`NullBooleanField` instead.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
The default value of ``BooleanField`` was changed from ``False`` to The default value of ``BooleanField`` was changed from ``False`` to
``None`` when :attr:`Field.default` isn't defined. ``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 .. versionadded:: 1.5
The current value of the field will be displayed as a clickable link above the The current value of the field will be displayed as a clickable link above the
input widget. input widget.
Relationship fields Relationship fields

View File

@ -297,8 +297,9 @@ follows this algorithm:
didn't update anything, Django executes an ``INSERT``. didn't update anything, Django executes an ``INSERT``.
.. versionchanged:: 1.6 .. 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 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 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``. particular kind within the contents of the ``QuerySet``.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
``dates`` used to return a list of :class:`datetime.datetime` objects. ``dates`` used to return a list of :class:`datetime.datetime` objects.
``field`` should be the name of a ``DateField`` of your model. ``field`` should be the name of a ``DateField`` of your model.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
``dates`` used to accept operating on a ``DateTimeField``. ``dates`` used to accept operating on a ``DateTimeField``.
``kind`` should be either ``"year"``, ``"month"`` or ``"day"``. Each ``kind`` should be either ``"year"``, ``"month"`` or ``"day"``. Each
@ -1121,11 +1123,11 @@ to ``defer()``::
.. versionchanged:: 1.5 .. versionchanged:: 1.5
Some fields in a model won't be deferred, even if you ask for them. You can 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 never defer the loading of the primary key. If you are using
:meth:`select_related()` to retrieve related models, you shouldn't defer the :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 loading of the field that connects from the primary model to the related
one, doing so will result in an error. one, doing so will result in an error.
.. note:: .. note::
@ -1193,20 +1195,20 @@ logically::
# existing set of fields). # existing set of fields).
Entry.objects.defer("body").only("headline", "body") Entry.objects.defer("body").only("headline", "body")
.. versionchanged:: 1.5
All of the cautions in the note for the :meth:`defer` documentation apply to 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 ``only()`` as well. Use it cautiously and only after exhausting your other
options. Also note that using :meth:`only` and omitting a field requested options.
using :meth:`select_related` is an error as well.
.. versionchanged:: 1.5 .. 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 .. note::
deferred fields, only the loaded fields will be saved. See
:meth:`~django.db.models.Model.save()` for more details. 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 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. where the default is such that at maximum 999 variables per query is used.
.. versionadded:: 1.5 .. versionadded:: 1.5
The ``batch_size`` parameter was added in version 1.5. The ``batch_size`` parameter was added in version 1.5.
count count
@ -1725,7 +1728,8 @@ methods on your models. It does, however, emit the
(including cascaded deletions). (including cascaded deletions).
.. versionadded:: 1.5 .. 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. 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 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. :attr:`HttpRequest.body` attribute instead.
.. versionchanged:: 1.5 .. versionchanged:: 1.5
Before Django 1.5, HttpRequest.POST contained non-form data. 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`` 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 .. versionchanged:: 1.5
This technique is fragile and was deprecated in Django 1.5. If you need the 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 response to be streamed from the iterator to the client, you should use the
:class:`StreamingHttpResponse` class instead. :class:`StreamingHttpResponse` class instead.
As of Django 1.7, when :class:`HttpResponse` is instantiated with an As of Django 1.7, when :class:`HttpResponse` is instantiated with an
iterator, it will consume it immediately, store the response content as a iterator, it will consume it immediately, store the response content as a
string, and discard the iterator. string, and discard the iterator.
.. versionchanged:: 1.5 .. versionchanged:: 1.5
You can now use :class:`HttpResponse` as a file-like object even if it was 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 instantiated with an iterator. Django will consume and save the content of
the iterator on first access. the iterator on first access.
Setting headers Setting headers
~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~

View File

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

View File

@ -78,13 +78,13 @@ Methods
.. versionchanged:: 1.5 .. versionchanged:: 1.5
Historically, this parameter was only called ``mimetype`` (now Historically, this parameter was only called ``mimetype`` (now
deprecated), but since this is actually the value included in the HTTP deprecated), but since this is actually the value included in the HTTP
``Content-Type`` header, it can also include the character set ``Content-Type`` header, it can also include the character set
encoding, which makes it more than just a MIME type specification. If encoding, which makes it more than just a MIME type specification. If
``mimetype`` is specified (not ``None``), that value is used. ``mimetype`` is specified (not ``None``), that value is used.
Otherwise, ``content_type`` is used. If neither is given, Otherwise, ``content_type`` is used. If neither is given,
:setting:`DEFAULT_CONTENT_TYPE` is used. :setting:`DEFAULT_CONTENT_TYPE` is used.
.. method:: SimpleTemplateResponse.resolve_context(context) .. 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. these variables resolve to the corresponding Python objects.
.. versionadded:: 1.5 .. versionadded:: 1.5
Before Django 1.5, these variables weren't a special case, and they Before Django 1.5, these variables weren't a special case, and they
resolved to ``None`` unless you defined them in the context. 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 .. versionchanged:: 1.6
To improve safety, future versions of ``cycle`` will automatically escape To improve safety, future versions of ``cycle`` will automatically escape
their output. You're encouraged to activate this behavior by loading their output. You're encouraged to activate this behavior by loading
``cycle`` from the ``future`` template library:: ``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 %} {% for o in some_list %}
<tr class="{% autoescape off %}{% cycle rowvalue1 rowvalue2 %}{% endautoescape %}"> <tr class="{% autoescape off %}{% cycle rowvalue1 rowvalue2 %}{% endautoescape %}">
... ...
</tr> </tr>
{% endfor %} {% endfor %}
.. templatetag:: debug .. templatetag:: debug
@ -294,21 +294,21 @@ to escape the variables in the firstof tag, you must do so explicitly::
.. versionchanged:: 1.6 .. versionchanged:: 1.6
To improve safety, future versions of ``firstof`` will automatically escape To improve safety, future versions of ``firstof`` will automatically escape
their output. You're encouraged to activate this behavior by loading their output. You're encouraged to activate this behavior by loading
``firstof`` from the ``future`` template library:: ``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 %} {% autoescape off %}
{% firstof var1 var2 var3 "<strong>fallback value</strong>" %} {% firstof var1 var2 var3 "<strong>fallback value</strong>" %}
{% endautoescape %} {% 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 .. 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! Don't forget to put quotes around the function path or pattern name!
.. versionchanged:: 1.5 .. versionchanged:: 1.5
The first parameter used not to be quoted, which was inconsistent with The first parameter used not to be quoted, which was inconsistent with
other template tags. Since Django 1.5, it is evaluated according to 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 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 .. versionchanged:: 1.5
In Python 3, the logic is reversed, that is normal strings are Unicode, and 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 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, 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 we recommend that you import ``unicode_literals`` from the __future__ library
in your code. Then, when you specifically want to create a bytestring literal, in your code. Then, when you specifically want to create a bytestring literal,
prefix the string with 'b'. prefix the string with 'b'.
Python 2 legacy:: Python 2 legacy::
my_string = "This is a bytestring" my_string = "This is a bytestring"
my_unicode = u"This is an Unicode string" 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_string = b"This is a bytestring"
my_unicode = "This is an Unicode string" my_unicode = "This is an Unicode string"
See also :doc:`Python 3 compatibility </topics/python3>`. See also :doc:`Python 3 compatibility </topics/python3>`.
.. warning:: .. 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: will be your definitive guide. Anywhere you see something like:
.. versionadded:: 1.0 .. versionadded:: 1.0
This feature is new in Django 1.0 This feature is new in Django 1.0
You'll know that you're looking at something new or changed. 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 .. versionadded:: 1.6
If a backend raises a :class:`~django.core.exceptions.PermissionDenied` If a backend raises a :class:`~django.core.exceptions.PermissionDenied`
exception, authentication will immediately fail. Django won't check the exception, authentication will immediately fail. Django won't check the
backends that follow. backends that follow.
Writing an authentication backend Writing an authentication backend
--------------------------------- ---------------------------------

View File

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

View File

@ -681,6 +681,7 @@ In addition, some objects are automatically created just after
database). database).
.. versionchanged:: 1.5 .. versionchanged:: 1.5
Previously, ``ContentType`` and ``Permission`` instances were created only Previously, ``ContentType`` and ``Permission`` instances were created only
in the default database. 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)) >>> Entry.objects.filter(mod_date__gt=F('pub_date') + timedelta(days=3))
.. versionadded:: 1.5 .. versionadded:: 1.5
``.bitand()`` and ``.bitor()`` ``.bitand()`` and ``.bitor()``
The ``F()`` objects now support bitwise operations by ``.bitand()`` and 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) >>> F('somefield').bitand(16)
.. versionchanged:: 1.5 .. versionchanged:: 1.5
The previously undocumented operators ``&`` and ``|`` no longer produce The previously undocumented operators ``&`` and ``|`` no longer produce
bitwise operations, use ``.bitand()`` and ``.bitor()`` instead. bitwise operations, use ``.bitand()`` and ``.bitor()`` instead.

View File

@ -222,6 +222,7 @@ For example::
return row return row
.. versionchanged:: 1.6 .. versionchanged:: 1.6
In Django 1.5 and earlier, after performing a data changing operation, you In Django 1.5 and earlier, after performing a data changing operation, you
had to call ``transaction.commit_unless_managed()`` to ensure your changes had to call ``transaction.commit_unless_managed()`` to ensure your changes
were committed to the database. Since Django now defaults to database-level 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. <topics-db-queries-update>` queries.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
Previous version of Django featured :ref:`a more complicated default Previous version of Django featured :ref:`a more complicated default
behavior <transactions-upgrading-from-1.5>`. behavior <transactions-upgrading-from-1.5>`.
@ -78,6 +79,7 @@ Middleware run outside of the transaction, and so does the rendering of
template responses. template responses.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
Django used to provide this feature via ``TransactionMiddleware``, which is Django used to provide this feature via ``TransactionMiddleware``, which is
now deprecated. now deprecated.
@ -204,6 +206,7 @@ To avoid this, you can :ref:`deactivate the transaction management
<deactivate-transaction-management>`, but it isn't recommended. <deactivate-transaction-management>`, but it isn't recommended.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
Before Django 1.6, autocommit was turned off, and it was emulated by Before Django 1.6, autocommit was turned off, and it was emulated by
forcing a commit after write operations in the ORM. 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. something really strange.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
This used to be controlled by the ``TRANSACTIONS_MANAGED`` setting. This used to be controlled by the ``TRANSACTIONS_MANAGED`` setting.
Low-level APIs Low-level APIs
@ -312,10 +316,10 @@ rollback that would be performed by ``transaction.rollback()``.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
When the :func:`atomic` decorator is nested, it creates a savepoint to allow 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` 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 rather than the functions described below, but they're still part of the
public API, and there's no plan to deprecate them. public API, and there's no plan to deprecate them.
Each of these functions takes a ``using`` argument which should be the name of 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 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 @transaction.atomic
def viewfunc(request): def viewfunc(request):
a.save() a.save()
# transaction now contains a.save() # transaction now contains a.save()
sid = transaction.savepoint() sid = transaction.savepoint()
b.save() b.save()
# transaction now contains a.save() and b.save() # transaction now contains a.save() and b.save()
if want_to_keep_b: if want_to_keep_b:
transaction.savepoint_commit(sid) transaction.savepoint_commit(sid)
# open transaction still contains a.save() and b.save() # open transaction still contains a.save() and b.save()
else: else:
transaction.savepoint_rollback(sid) transaction.savepoint_rollback(sid)
# open transaction now contains only a.save() # open transaction now contains only a.save()
Database-specific notes Database-specific notes
======================= =======================

View File

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

View File

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

View File

@ -71,6 +71,7 @@ default cache. To use another cache, set :setting:`SESSION_CACHE_ALIAS` to the
name of that cache. name of that cache.
.. versionchanged:: 1.5 .. versionchanged:: 1.5
The :setting:`SESSION_CACHE_ALIAS` setting was added. The :setting:`SESSION_CACHE_ALIAS` setting was added.
Once your cache is configured, you've got two choices for how to store data in 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. session cookie is sent.
.. versionchanged:: 1.5 .. versionchanged:: 1.5
The session is not saved if the response's status code is 500. The session is not saved if the response's status code is 500.
.. _browser-length-vs-persistent-sessions: .. _browser-length-vs-persistent-sessions:

View File

@ -51,6 +51,7 @@ Optional arguments
the :setting:`DEFAULT_CONTENT_TYPE` setting. the :setting:`DEFAULT_CONTENT_TYPE` setting.
.. versionchanged:: 1.5 .. versionchanged:: 1.5
This parameter used to be called ``mimetype``. This parameter used to be called ``mimetype``.
``status`` ``status``
@ -129,6 +130,7 @@ Optional arguments
the :setting:`DEFAULT_CONTENT_TYPE` setting. the :setting:`DEFAULT_CONTENT_TYPE` setting.
.. versionchanged:: 1.5 .. versionchanged:: 1.5
This parameter used to be called ``mimetype``. 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'``. ``'django.middleware.locale.LocaleMiddleware'``.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
In previous versions, ``LocaleMiddleware`` wasn't enabled by default. In previous versions, ``LocaleMiddleware`` wasn't enabled by default.
Because middleware order matters, you should follow these guidelines: Because middleware order matters, you should follow these guidelines:

View File

@ -252,7 +252,7 @@ Methods
.. versionchanged:: 1.5 .. 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() .. method:: Page.previous_page_number()
@ -260,7 +260,7 @@ Methods
.. versionchanged:: 1.5 .. 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() .. method:: Page.start_index()

View File

@ -124,8 +124,8 @@ Calling ``DeserializedObject.save()`` saves the object to the database.
.. versionchanged:: 1.6 .. versionchanged:: 1.6
In previous versions of Django, the ``pk`` attribute had to be present In previous versions of Django, the ``pk`` attribute had to be present
on the serialized data or a ``DeserializationError`` would be raised. on the serialized data or a ``DeserializationError`` would be raised.
This ensures that deserializing is a non-destructive operation even if the 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 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 .. versionadded:: 1.5
If fields in the serialized data do not exist on a model, If fields in the serialized data do not exist on a model,
a ``DeserializationError`` will be raised unless the ``ignorenonexistent`` a ``DeserializationError`` will be raised unless the ``ignorenonexistent``
argument is passed in as True:: argument is passed in as True::
serializers.deserialize("xml", data, ignorenonexistent=True) serializers.deserialize("xml", data, ignorenonexistent=True)
.. _serialization-formats: .. _serialization-formats:

View File

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