Adapted uses of versionchanged/versionadded to the new form.
Refs #20104.
This commit is contained in:
parent
1ddeeb5b8e
commit
78c842a323
|
@ -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 = []
|
||||
|
|
|
@ -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
|
||||
-------
|
||||
|
|
|
@ -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
|
||||
==============================
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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`` --
|
||||
|
|
|
@ -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`.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
=================
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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``.
|
||||
|
||||
|
|
|
@ -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``.
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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>`.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
~~~~~~~~~~~~~~~
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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::
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
---------------------------------
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
=======================
|
||||
|
|
|
@ -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`.
|
||||
|
||||
|
|
|
@ -204,6 +204,7 @@ Dealing with streaming responses
|
|||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. versionchanged:: 1.5
|
||||
|
||||
``response`` may also be an :class:`~django.http.StreamingHttpResponse`
|
||||
object.
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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``.
|
||||
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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?
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue