Removed versionadded/changed annotations for 1.5

This commit is contained in:
Tim Graham 2013-08-19 08:29:32 -04:00
parent 58c6d0209d
commit 7b69c3e775
45 changed files with 65 additions and 400 deletions

View File

@ -104,12 +104,6 @@ TemplateView
Renders a given template, with the context containing parameters captured Renders a given template, with the context containing parameters captured
in the URL. 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.
**Ancestors (MRO)** **Ancestors (MRO)**
This view inherits methods and attributes from the following views: This view inherits methods and attributes from the following views:

View File

@ -138,24 +138,16 @@ YearArchiveView
* ``year``: A :class:`~datetime.date` object * ``year``: A :class:`~datetime.date` object
representing the given year. representing the given year.
.. versionchanged:: 1.5
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
:attr:`~BaseDateListView.allow_empty` and :attr:`~BaseDateListView.allow_empty` and
:attr:`~DateMixin.allow_future`. :attr:`~DateMixin.allow_future`.
.. versionadded:: 1.5
* ``previous_year``: A :class:`~datetime.date` object * ``previous_year``: A :class:`~datetime.date` object
representing the first day of the previous year, according to representing the first day of the previous year, according to
:attr:`~BaseDateListView.allow_empty` and :attr:`~BaseDateListView.allow_empty` and
:attr:`~DateMixin.allow_future`. :attr:`~DateMixin.allow_future`.
.. versionadded:: 1.5
**Notes** **Notes**
* Uses a default ``template_name_suffix`` of ``_archive_year``. * Uses a default ``template_name_suffix`` of ``_archive_year``.

View File

@ -328,8 +328,3 @@ BaseDateListView
:meth:`~BaseDateListView.get_date_list_period` is used. ``date_type`` :meth:`~BaseDateListView.get_date_list_period` is used. ``date_type``
and ``ordering`` are simply passed to and ``ordering`` are simply passed to
:meth:`QuerySet.dates()<django.db.models.query.QuerySet.dates>`. :meth:`QuerySet.dates()<django.db.models.query.QuerySet.dates>`.
.. versionchanged:: 1.5
The ``ordering`` parameter was added, and the default order was
changed to ascending.

View File

@ -90,8 +90,6 @@ MultipleObjectMixin
.. attribute:: page_kwarg .. attribute:: page_kwarg
.. versionadded:: 1.5
A string specifying the name to use for the page parameter. A string specifying the name to use for the page parameter.
The view will expect this prameter to be available either as a query The view will expect this prameter to be available either as a query
string parameter (via ``request.GET``) or as a kwarg variable specified string parameter (via ``request.GET``) or as a kwarg variable specified

View File

@ -7,8 +7,6 @@ ContextMixin
.. class:: django.views.generic.base.ContextMixin .. class:: django.views.generic.base.ContextMixin
.. versionadded:: 1.5
**Methods** **Methods**
.. method:: get_context_data(**kwargs) .. method:: get_context_data(**kwargs)
@ -77,8 +75,6 @@ TemplateResponseMixin
.. attribute:: content_type .. attribute:: content_type
.. versionadded:: 1.5
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`` --
meaning that Django uses :setting:`DEFAULT_CONTENT_TYPE`. meaning that Django uses :setting:`DEFAULT_CONTENT_TYPE`.

View File

@ -1235,8 +1235,6 @@ templates used by the :class:`ModelAdmin` views:
.. method:: ModelAdmin.get_list_filter(self, request) .. method:: ModelAdmin.get_list_filter(self, request)
.. versionadded:: 1.5
The ``get_list_filter`` method is given the ``HttpRequest`` and is expected The ``get_list_filter`` method is given the ``HttpRequest`` and is expected
to return the same kind of sequence type as for the to return the same kind of sequence type as for the
:attr:`~ModelAdmin.list_filter` attribute. :attr:`~ModelAdmin.list_filter` attribute.
@ -1251,8 +1249,6 @@ templates used by the :class:`ModelAdmin` views:
.. method:: ModelAdmin.get_inline_instances(self, request, obj=None) .. method:: ModelAdmin.get_inline_instances(self, request, obj=None)
.. versionadded:: 1.5
The ``get_inline_instances`` method is given the ``HttpRequest`` and the The ``get_inline_instances`` method is given the ``HttpRequest`` and the
``obj`` being edited (or ``None`` on an add form) and is expected to return ``obj`` being edited (or ``None`` on an add form) and is expected to return
a ``list`` or ``tuple`` of :class:`~django.contrib.admin.InlineModelAdmin` a ``list`` or ``tuple`` of :class:`~django.contrib.admin.InlineModelAdmin`
@ -1506,10 +1502,6 @@ 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>`.
.. 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
installed. These keyword arguments match those for installed. These keyword arguments match those for

View File

@ -389,8 +389,6 @@ can be used for notification when a user logs in or out.
.. function:: user_login_failed .. function:: user_login_failed
.. versionadded:: 1.5
Sent when the user failed to login successfully Sent when the user failed to login successfully
``sender`` ``sender``

View File

@ -199,14 +199,18 @@ The ``ContentTypeManager``
Takes either a model class or an instance of a model, and returns the Takes either a model class or an instance of a model, and returns the
:class:`~django.contrib.contenttypes.models.ContentType` instance :class:`~django.contrib.contenttypes.models.ContentType` instance
representing that model. representing that model. ``for_concrete_model=False`` allows fetching
the :class:`~django.contrib.contenttypes.models.ContentType` of a proxy
model.
.. method:: get_for_models(*models[, for_concrete_models=True]) .. method:: get_for_models(*models[, for_concrete_models=True])
Takes a variadic number of model classes, and returns a dictionary Takes a variadic number of model classes, and returns a dictionary
mapping the model classes to the mapping the model classes to the
:class:`~django.contrib.contenttypes.models.ContentType` instances :class:`~django.contrib.contenttypes.models.ContentType` instances
representing them. representing them. ``for_concrete_models=False`` allows fetching the
:class:`~django.contrib.contenttypes.models.ContentType` of proxy
models.
.. method:: get_by_natural_key(app_label, model) .. method:: get_by_natural_key(app_label, model)
@ -232,21 +236,6 @@ lookup::
.. _generic-relations: .. _generic-relations:
.. 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.
Generic relations Generic relations
================= =================

View File

@ -949,10 +949,6 @@ __ http://geohash.org/
*Availability*: PostGIS, SpatiaLite *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 Attaches a ``geojson`` attribute to every model in the queryset that contains the
`GeoJSON`__ representation of the geometry. `GeoJSON`__ representation of the geometry.

View File

@ -276,10 +276,6 @@ that the SRID value is not included in this representation
because it is not a part of the OGC specification (use the because it is not a part of the OGC specification (use the
:attr:`GEOSGeometry.hexewkb` property instead). :attr:`GEOSGeometry.hexewkb` property instead).
.. versionchanged:: 1.5
Prior to Django 1.5, the Z value of the geometry was dropped.
.. attribute:: GEOSGeometry.hexewkb .. attribute:: GEOSGeometry.hexewkb
Returns the EWKB of this Geometry in hexadecimal form. This is an Returns the EWKB of this Geometry in hexadecimal form. This is an
@ -325,10 +321,6 @@ Returns the WKB (Well-Known Binary) representation of this Geometry
as a Python buffer. SRID value is not included, use the as a Python buffer. SRID value is not included, use the
:attr:`GEOSGeometry.ewkb` property instead. :attr:`GEOSGeometry.ewkb` property instead.
.. versionchanged:: 1.5
Prior to Django 1.5, the Z value of the geometry was dropped.
.. _ewkb: .. _ewkb:
.. attribute:: GEOSGeometry.ewkb .. attribute:: GEOSGeometry.ewkb
@ -426,8 +418,6 @@ geometry that do not make up other.
.. method:: GEOSGeometry.interpolate(distance) .. method:: GEOSGeometry.interpolate(distance)
.. method:: GEOSGeometry.interpolate_normalized(distance) .. method:: GEOSGeometry.interpolate_normalized(distance)
.. versionadded:: 1.5
Given a distance (float), returns the point (or closest point) within the Given a distance (float), returns the point (or closest point) within the
geometry (:class:`LineString` or :class:`MultiLineString`) at that distance. geometry (:class:`LineString` or :class:`MultiLineString`) at that distance.
The normalized version takes the distance as a float between 0 (origin) and 1 The normalized version takes the distance as a float between 0 (origin) and 1
@ -443,8 +433,6 @@ geometry and other.
.. method:: GEOSGeometry.project(point) .. method:: GEOSGeometry.project(point)
.. method:: GEOSGeometry.project_normalized(point) .. method:: GEOSGeometry.project_normalized(point)
.. versionadded:: 1.5
Returns the distance (float) from the origin of the geometry Returns the distance (float) from the origin of the geometry
(:class:`LineString` or :class:`MultiLineString`) to the point projected on the (:class:`LineString` or :class:`MultiLineString`) to the point projected on the
geometry (that is to a point of the line the closest to the given point). geometry (that is to a point of the line the closest to the given point).

View File

@ -255,8 +255,6 @@ CachedStaticFilesStorage
.. method:: file_hash(name, content=None) .. method:: file_hash(name, content=None)
.. versionadded:: 1.5
The method that is used when creating the hashed name of a file. The method that is used when creating the hashed name of a file.
Needs to return a hash for the given file name and content. Needs to return a hash for the given file name and content.
By default it calculates a MD5 hash from the content's chunks as By default it calculates a MD5 hash from the content's chunks as
@ -290,8 +288,6 @@ The previous example is equal to calling the ``url`` method of an instance of
useful when using a non-local storage backend to deploy files as documented useful when using a non-local storage backend to deploy files as documented
in :ref:`staticfiles-from-cdn`. in :ref:`staticfiles-from-cdn`.
.. versionadded:: 1.5
If you'd like to retrieve a static URL without displaying it, you can use a If you'd like to retrieve a static URL without displaying it, you can use a
slightly different call: slightly different call:

View File

@ -191,10 +191,6 @@ Django supports MySQL 5.0.3 and higher.
`MySQL 5.0`_ adds the ``information_schema`` database, which contains detailed `MySQL 5.0`_ adds the ``information_schema`` database, which contains detailed
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
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
it the task of enforcing transactions and referential integrity. It is important it the task of enforcing transactions and referential integrity. It is important
to be aware of the fact that the two latter ones aren't actually enforced by to be aware of the fact that the two latter ones aren't actually enforced by

View File

@ -256,8 +256,6 @@ to flush.
``--no-initial-data`` ``--no-initial-data``
~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
.. versionadded:: 1.5
Use ``--no-initial-data`` to avoid loading the initial_data fixture. Use ``--no-initial-data`` to avoid loading the initial_data fixture.
@ -334,8 +332,6 @@ onto which the data will be loaded.
.. django-admin-option:: --ignorenonexistent .. django-admin-option:: --ignorenonexistent
.. versionadded:: 1.5
The :djadminopt:`--ignorenonexistent` option can be used to ignore fields that The :djadminopt:`--ignorenonexistent` option can be used to ignore fields that
may have been removed from models since the fixture was originally generated. may have been removed from models since the fixture was originally generated.
@ -859,10 +855,6 @@ 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.
@ -1148,8 +1140,6 @@ synchronize.
``--no-initial-data`` ``--no-initial-data``
~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
.. versionadded:: 1.5
Use ``--no-initial-data`` to avoid loading the initial_data fixture. Use ``--no-initial-data`` to avoid loading the initial_data fixture.
test <app or test identifier> test <app or test identifier>
@ -1327,8 +1317,6 @@ clearsessions
.. django-admin:: clearsessions .. django-admin:: clearsessions
.. versionadded:: 1.5
Can be run as a cron job or directly to clean out expired sessions. Can be run as a cron job or directly to clean out expired sessions.
``django.contrib.sitemaps`` ``django.contrib.sitemaps``

View File

@ -100,10 +100,6 @@ The ``ContentFile`` Class
f1 = ContentFile("esta sentencia está en español") f1 = ContentFile("esta sentencia está en español")
f2 = ContentFile(b"these are bytes") f2 = ContentFile(b"these are bytes")
.. versionchanged:: 1.5
ContentFile also accepts Unicode strings.
.. currentmodule:: django.core.files.images .. currentmodule:: django.core.files.images
The ``ImageFile`` Class The ``ImageFile`` Class

View File

@ -211,11 +211,6 @@ only the valid fields::
>>> f.cleaned_data >>> f.cleaned_data
{'cc_myself': True, 'message': u'Hi there'} {'cc_myself': True, 'message': u'Hi there'}
.. versionchanged:: 1.5
Until Django 1.5, the ``cleaned_data`` attribute wasn't defined at all when
the ``Form`` didn't validate.
``cleaned_data`` will always *only* contain a key for fields defined in the ``cleaned_data`` will always *only* contain a key for fields defined in the
``Form``, even if you pass extra data when you define the ``Form``. In this ``Form``, even if you pass extra data when you define the ``Form``. In this
example, we pass a bunch of extra fields to the ``ContactForm`` constructor, example, we pass a bunch of extra fields to the ``ContactForm`` constructor,

View File

@ -573,16 +573,12 @@ For each field, we describe the default widget used if you don't specify
.. attribute:: allow_files .. attribute:: allow_files
.. versionadded:: 1.5
Optional. Either ``True`` or ``False``. Default is ``True``. Specifies Optional. Either ``True`` or ``False``. Default is ``True``. Specifies
whether files in the specified location should be included. Either this or whether files in the specified location should be included. Either this or
:attr:`allow_folders` must be ``True``. :attr:`allow_folders` must be ``True``.
.. attribute:: allow_folders .. attribute:: allow_folders
.. versionadded:: 1.5
Optional. Either ``True`` or ``False``. Default is ``False``. Specifies Optional. Either ``True`` or ``False``. Default is ``False``. Specifies
whether folders in the specified location should be included. Either this or whether folders in the specified location should be included. Either this or
:attr:`allow_files` must be ``True``. :attr:`allow_files` must be ``True``.
@ -1065,11 +1061,6 @@ objects (in the case of ``ModelMultipleChoiceField``) into the
* Error message keys: ``required``, ``list``, ``invalid_choice``, * Error message keys: ``required``, ``list``, ``invalid_choice``,
``invalid_pk_value`` ``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 .. versionchanged:: 1.6
The ``invalid_choice`` message may contain ``%(value)s`` and the The ``invalid_choice`` message may contain ``%(value)s`` and the

View File

@ -450,11 +450,5 @@ entries in ``_errors``.
Secondly, once we have decided that the combined data in the two fields we are Secondly, once we have decided that the combined data in the two fields we are
considering aren't valid, we must remember to remove them from the considering aren't valid, we must remember to remove them from the
``cleaned_data``. ``cleaned_data``. `cleaned_data`` is present even if the form doesn't
validate, but it contains only field values that did validate.
.. 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.

View File

@ -525,11 +525,6 @@ Selector and checkbox widgets
A callable that takes the value of the CheckBoxInput and returns A callable that takes the value of the CheckBoxInput and returns
``True`` if the checkbox should be checked for that value. ``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.
``Select`` ``Select``
~~~~~~~~~~ ~~~~~~~~~~

View File

@ -757,21 +757,16 @@ directory on the filesystem. Has three special arguments, of which the first is
.. attribute:: FilePathField.allow_files .. attribute:: FilePathField.allow_files
.. versionadded:: 1.5
Optional. Either ``True`` or ``False``. Default is ``True``. Specifies Optional. Either ``True`` or ``False``. Default is ``True``. Specifies
whether files in the specified location should be included. Either this or whether files in the specified location should be included. Either this or
:attr:`~FilePathField.allow_folders` must be ``True``. :attr:`~FilePathField.allow_folders` must be ``True``.
.. attribute:: FilePathField.allow_folders .. attribute:: FilePathField.allow_folders
.. versionadded:: 1.5
Optional. Either ``True`` or ``False``. Default is ``False``. Specifies Optional. Either ``True`` or ``False``. Default is ``False``. Specifies
whether folders in the specified location should be included. Either this whether folders in the specified location should be included. Either this
or :attr:`~FilePathField.allow_files` must be ``True``. or :attr:`~FilePathField.allow_files` must be ``True``.
Of course, these arguments can be used together. Of course, these arguments can be used together.
The one potential gotcha is that :attr:`~FilePathField.match` applies to the The one potential gotcha is that :attr:`~FilePathField.match` applies to the
@ -980,12 +975,6 @@ Like all :class:`CharField` subclasses, :class:`URLField` takes the optional
:attr:`~CharField.max_length` argument. If you don't specify :attr:`~CharField.max_length` argument. If you don't specify
:attr:`~CharField.max_length`, a default of 200 is used. :attr:`~CharField.max_length`, a default of 200 is used.
.. versionadded:: 1.5
The current value of the field will be displayed as a clickable link above the
input widget.
Relationship fields Relationship fields
=================== ===================

View File

@ -388,8 +388,6 @@ For more details, see the documentation on :ref:`F() expressions
Specifying which fields to save Specifying which fields to save
------------------------------- -------------------------------
.. versionadded:: 1.5
If ``save()`` is passed a list of field names in keyword argument If ``save()`` is passed a list of field names in keyword argument
``update_fields``, only the fields named in that list will be updated. ``update_fields``, only the fields named in that list will be updated.
This may be desirable if you want to update just one or a few fields on This may be desirable if you want to update just one or a few fields on

View File

@ -286,8 +286,6 @@ Django quotes column and table names behind the scenes.
.. attribute:: Options.index_together .. attribute:: Options.index_together
.. versionadded:: 1.5
Sets of field names that, taken together, are indexed:: Sets of field names that, taken together, are indexed::
index_together = [ index_together = [

View File

@ -1149,13 +1149,11 @@ to ``defer()``::
# Load all fields immediately. # Load all fields immediately.
my_queryset.defer(None) my_queryset.defer(None)
.. 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
Some fields in a model won't be deferred, even if you ask for them. You can :meth:`select_related()` to retrieve related models, you shouldn't defer the
never defer the loading of the primary key. If you are using loading of the field that connects from the primary model to the related
:meth:`select_related()` to retrieve related models, you shouldn't defer the one, doing so will result in an error.
loading of the field that connects from the primary model to the related
one, doing so will result in an error.
.. note:: .. note::
@ -1178,8 +1176,6 @@ to ``defer()``::
reader, is slightly faster and consumes a little less memory in the Python reader, is slightly faster and consumes a little less memory in the Python
process. process.
.. versionchanged:: 1.5
.. note:: .. note::
When calling :meth:`~django.db.models.Model.save()` for instances with When calling :meth:`~django.db.models.Model.save()` for instances with
@ -1227,16 +1223,14 @@ 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. options.
.. versionchanged:: 1.5 Using :meth:`only` and omitting a field requested using :meth:`select_related`
is an error as well.
Using :meth:`only` and omitting a field requested using .. note::
:meth:`select_related` is an error as well.
.. note:: When calling :meth:`~django.db.models.Model.save()` for instances with
deferred fields, only the loaded fields will be saved. See
When calling :meth:`~django.db.models.Model.save()` for instances with :meth:`~django.db.models.Model.save()` for more details.
deferred fields, only the loaded fields will be saved. See
:meth:`~django.db.models.Model.save()` for more details.
using using
~~~~~ ~~~~~
@ -1567,10 +1561,6 @@ The ``batch_size`` parameter controls how many objects are created in single
query. The default is to create all objects in one batch, except for SQLite 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
The ``batch_size`` parameter was added in version 1.5.
count count
~~~~~ ~~~~~
@ -1900,10 +1890,6 @@ methods on your models. It does, however, emit the
:data:`~django.db.models.signals.post_delete` signals for all deleted objects :data:`~django.db.models.signals.post_delete` signals for all deleted objects
(including cascaded deletions). (including cascaded deletions).
.. versionadded:: 1.5
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
fast-path and delete objects without fetching into memory. For large fast-path and delete objects without fetching into memory. For large
@ -1911,7 +1897,7 @@ deletes this can result in significantly reduced memory usage. The amount of
executed queries can be reduced, too. executed queries can be reduced, too.
ForeignKeys which are set to :attr:`~django.db.models.ForeignKey.on_delete` ForeignKeys which are set to :attr:`~django.db.models.ForeignKey.on_delete`
DO_NOTHING do not prevent taking the fast-path in deletion. ``DO_NOTHING`` do not prevent taking the fast-path in deletion.
Note that the queries generated in object deletion is an implementation Note that the queries generated in object deletion is an implementation
detail subject to change. detail subject to change.

View File

@ -93,10 +93,6 @@ All attributes should be considered read-only, unless stated otherwise below.
non-form data posted in the request, access this through the non-form data posted in the request, access this through the
:attr:`HttpRequest.body` attribute instead. :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`` It's possible that a request can come in via POST with an empty ``POST``
dictionary -- if, say, a form is requested via the POST HTTP method but dictionary -- if, say, a form is requested via the POST HTTP method but
does not include form data. Therefore, you shouldn't use ``if request.POST`` does not include form data. Therefore, you shouldn't use ``if request.POST``
@ -196,8 +192,6 @@ All attributes should be considered read-only, unless stated otherwise below.
.. attribute:: HttpRequest.resolver_match .. attribute:: HttpRequest.resolver_match
.. versionadded:: 1.5
An instance of :class:`~django.core.urlresolvers.ResolverMatch` representing An instance of :class:`~django.core.urlresolvers.ResolverMatch` representing
the resolved url. This attribute is only set after url resolving took place, the resolved url. This attribute is only set after url resolving took place,
which means it's available in all views but not in middleware methods which which means it's available in all views but not in middleware methods which
@ -824,8 +818,6 @@ types of HTTP responses. Like ``HttpResponse``, these subclasses live in
StreamingHttpResponse objects StreamingHttpResponse objects
============================= =============================
.. versionadded:: 1.5
.. class:: StreamingHttpResponse .. class:: StreamingHttpResponse
The :class:`StreamingHttpResponse` class is used to stream a response from The :class:`StreamingHttpResponse` class is used to stream a response from

View File

@ -1542,6 +1542,8 @@ unpredictable value.
:djadmin:`django-admin.py startproject <startproject>` automatically adds a :djadmin:`django-admin.py startproject <startproject>` automatically adds a
randomly-generated ``SECRET_KEY`` to each new project. randomly-generated ``SECRET_KEY`` to each new project.
Django will refuse to start if :setting:`SECRET_KEY` is not set.
.. warning:: .. warning::
**Keep this value secret.** **Keep this value secret.**
@ -1550,10 +1552,6 @@ randomly-generated ``SECRET_KEY`` to each new project.
security protections, and can lead to privilege escalation and remote code security protections, and can lead to privilege escalation and remote code
execution vulnerabilities. execution vulnerabilities.
.. versionchanged:: 1.5
Django will now refuse to start if :setting:`SECRET_KEY` is not set.
.. setting:: SECURE_PROXY_SSL_HEADER .. setting:: SECURE_PROXY_SSL_HEADER
SECURE_PROXY_SSL_HEADER SECURE_PROXY_SSL_HEADER
@ -2108,13 +2106,9 @@ The URL where requests are redirected after login when the
This is used by the :func:`~django.contrib.auth.decorators.login_required` This is used by the :func:`~django.contrib.auth.decorators.login_required`
decorator, for example. decorator, for example.
.. versionchanged:: 1.5 This setting also accepts view function names and :ref:`named URL patterns
<naming-url-patterns>` which can be used to reduce configuration duplication
This setting now also accepts view function names and since you don't have to define the URL in two places (``settings`` and URLconf).
: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 .. setting:: LOGIN_URL
@ -2126,13 +2120,9 @@ Default: ``'/accounts/login/'``
The URL where requests are redirected for login, especially when using the The URL where requests are redirected for login, especially when using the
:func:`~django.contrib.auth.decorators.login_required` decorator. :func:`~django.contrib.auth.decorators.login_required` decorator.
.. versionchanged:: 1.5 This setting also accepts view function names and :ref:`named URL patterns
<naming-url-patterns>` which can be used to reduce configuration duplication
This setting now also accepts view function names and since you don't have to define the URL in two places (``settings`` and URLconf).
: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 .. setting:: LOGOUT_URL

View File

@ -118,8 +118,6 @@ Arguments sent with this signal:
``using`` ``using``
The database alias being used. The database alias being used.
.. versionadded:: 1.5
``update_fields`` ``update_fields``
The set of fields to update explicitly specified in the ``save()`` method. The set of fields to update explicitly specified in the ``save()`` method.
``None`` if this argument was not used in the ``save()`` call. ``None`` if this argument was not used in the ``save()`` call.
@ -153,8 +151,6 @@ Arguments sent with this signal:
``using`` ``using``
The database alias being used. The database alias being used.
.. versionadded:: 1.5
``update_fields`` ``update_fields``
The set of fields to update explicitly specified in the ``save()`` method. The set of fields to update explicitly specified in the ``save()`` method.
``None`` if this argument was not used in the ``save()`` call. ``None`` if this argument was not used in the ``save()`` call.
@ -496,14 +492,7 @@ request_finished
.. data:: django.core.signals.request_finished .. data:: django.core.signals.request_finished
:module: :module:
Sent when Django finishes processing an HTTP request. Sent when Django finishes delvering an HTTP response to the client.
.. versionchanged:: 1.5
Before Django 1.5, this signal was sent before delivering content to the
client. In order to accommodate :ref:`streaming responses
<httpresponse-streaming>`, it is now sent after the response has been fully
delivered to the client.
.. note:: .. note::

View File

@ -75,16 +75,10 @@ Methods
The HTTP Status code for the response. The HTTP Status code for the response.
``content_type`` ``content_type``
The value included in the HTTP ``Content-Type`` header, including the
.. versionchanged:: 1.5 MIME type specification and the character set encoding. If
``content_type`` is specified, then its value is used. Otherwise,
Historically, this parameter was only called ``mimetype`` (now :setting:`DEFAULT_CONTENT_TYPE` is used.
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
``content_type`` is specified, then its value is used. Otherwise,
:setting:`DEFAULT_CONTENT_TYPE` is used.
.. method:: SimpleTemplateResponse.resolve_context(context) .. method:: SimpleTemplateResponse.resolve_context(context)
@ -167,13 +161,8 @@ Methods
The HTTP Status code for the response. The HTTP Status code for the response.
``content_type`` ``content_type``
The value included in the HTTP ``Content-Type`` header, including the
.. versionchanged:: 1.5 MIME type specification and the character set encoding. If
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
``content_type`` is specified, then its value is used. Otherwise, ``content_type`` is specified, then its value is used. Otherwise,
:setting:`DEFAULT_CONTENT_TYPE` is used. :setting:`DEFAULT_CONTENT_TYPE` is used.

View File

@ -274,11 +274,6 @@ Builtin variables
Every context contains ``True``, ``False`` and ``None``. As you would expect, 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
Before Django 1.5, these variables weren't a special case, and they
resolved to ``None`` unless you defined them in the context.
Playing with Context objects Playing with Context objects
---------------------------- ----------------------------

View File

@ -1059,22 +1059,14 @@ by the context as to the current application.
.. warning:: .. warning::
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,
otherwise the value will be interpreted as a context variable!
.. 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
looked up in the context.
.. templatetag:: verbatim .. templatetag:: verbatim
verbatim verbatim
^^^^^^^^ ^^^^^^^^
.. versionadded:: 1.5
Stops the template engine from rendering the contents of this block tag. Stops the template engine from rendering the contents of this block tag.
A common use is to allow a Javascript template layer that collides with A common use is to allow a Javascript template layer that collides with
@ -2411,8 +2403,6 @@ It is also able to consume standard context variables, e.g. assuming a
If you'd like to retrieve a static URL without displaying it, you can use a If you'd like to retrieve a static URL without displaying it, you can use a
slightly different call: slightly different call:
.. versionadded:: 1.5
.. code-block:: html+django .. code-block:: html+django
{% load static %} {% load static %}

View File

@ -45,28 +45,26 @@ rendering or anywhere else -- you have two choices for encoding those strings.
You can use Unicode strings, or you can use normal strings (sometimes called You can use Unicode strings, or you can use normal strings (sometimes called
"bytestrings") that are encoded using UTF-8. "bytestrings") that are encoded using UTF-8.
.. 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 Python 2 legacy::
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:: my_string = "This is a bytestring"
my_unicode = u"This is an Unicode string"
my_string = "This is a bytestring" Python 2 with unicode literals or Python 3::
my_unicode = u"This is an Unicode string"
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" See also :doc:`Python 3 compatibility </topics/python3>`.
my_unicode = "This is an Unicode string"
See also :doc:`Python 3 compatibility </topics/python3>`.
.. warning:: .. warning::

View File

@ -204,8 +204,6 @@ The functions defined in this module share the following properties:
.. function:: smart_text(s, encoding='utf-8', strings_only=False, errors='strict') .. function:: smart_text(s, encoding='utf-8', strings_only=False, errors='strict')
.. versionadded:: 1.5
Returns a text object representing ``s`` -- ``unicode`` on Python 2 and Returns a text object representing ``s`` -- ``unicode`` on Python 2 and
``str`` on Python 3. Treats bytestrings using the ``encoding`` codec. ``str`` on Python 3. Treats bytestrings using the ``encoding`` codec.
@ -225,8 +223,6 @@ The functions defined in this module share the following properties:
.. function:: force_text(s, encoding='utf-8', strings_only=False, errors='strict') .. function:: force_text(s, encoding='utf-8', strings_only=False, errors='strict')
.. versionadded:: 1.5
Similar to ``smart_text``, except that lazy instances are resolved to Similar to ``smart_text``, except that lazy instances are resolved to
strings, rather than kept as lazy objects. strings, rather than kept as lazy objects.
@ -239,8 +235,6 @@ The functions defined in this module share the following properties:
.. function:: smart_bytes(s, encoding='utf-8', strings_only=False, errors='strict') .. function:: smart_bytes(s, encoding='utf-8', strings_only=False, errors='strict')
.. versionadded:: 1.5
Returns a bytestring version of ``s``, encoded as specified in Returns a bytestring version of ``s``, encoded as specified in
``encoding``. ``encoding``.
@ -249,8 +243,6 @@ The functions defined in this module share the following properties:
.. function:: force_bytes(s, encoding='utf-8', strings_only=False, errors='strict') .. function:: force_bytes(s, encoding='utf-8', strings_only=False, errors='strict')
.. versionadded:: 1.5
Similar to ``smart_bytes``, except that lazy instances are resolved to Similar to ``smart_bytes``, except that lazy instances are resolved to
bytestrings, rather than kept as lazy objects. bytestrings, rather than kept as lazy objects.
@ -745,8 +737,6 @@ appropriate entities.
.. class:: SafeBytes .. class:: SafeBytes
.. versionadded:: 1.5
A ``bytes`` subclass that has been specifically marked as "safe" A ``bytes`` subclass that has been specifically marked as "safe"
(requires no further escaping) for HTML output purposes. (requires no further escaping) for HTML output purposes.
@ -758,8 +748,6 @@ appropriate entities.
.. class:: SafeText .. class:: SafeText
.. versionadded:: 1.5
A ``str`` (in Python 3) or ``unicode`` (in Python 2) subclass A ``str`` (in Python 3) or ``unicode`` (in Python 2) subclass
that has been specifically marked as "safe" for HTML output purposes. that has been specifically marked as "safe" for HTML output purposes.
@ -977,8 +965,6 @@ For a complete discussion on the usage of the following see the
``None``, the :ref:`current time zone <default-current-time-zone>` is unset ``None``, the :ref:`current time zone <default-current-time-zone>` is unset
on entry with :func:`deactivate()` instead. on entry with :func:`deactivate()` instead.
.. versionadded:: 1.5
.. function:: localtime(value, timezone=None) .. function:: localtime(value, timezone=None)
Converts an aware :class:`~datetime.datetime` to a different time zone, Converts an aware :class:`~datetime.datetime` to a different time zone,

View File

@ -359,8 +359,6 @@ the extra database load.
Substituting a custom User model Substituting a custom User model
================================ ================================
.. versionadded:: 1.5
Some kinds of projects may have authentication requirements for which Django's Some kinds of projects may have authentication requirements for which Django's
built-in :class:`~django.contrib.auth.models.User` model is not always built-in :class:`~django.contrib.auth.models.User` model is not always
appropriate. For instance, on some sites it makes more sense to use an email appropriate. For instance, on some sites it makes more sense to use an email

View File

@ -434,12 +434,10 @@ The login_required decorator
(r'^accounts/login/$', 'django.contrib.auth.views.login'), (r'^accounts/login/$', 'django.contrib.auth.views.login'),
.. 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
The :setting:`settings.LOGIN_URL <LOGIN_URL>` also accepts to freely remap your login view within your URLconf without having to
view function names and :ref:`named URL patterns <naming-url-patterns>`. update the setting.
This allows you to freely remap your login view within your URLconf
without having to update the setting.
.. note:: .. note::
@ -1187,10 +1185,6 @@ Thus, you can check permissions in template ``{% if %}`` statements:
<p>You don't have permission to do anything in the foo app.</p> <p>You don't have permission to do anything in the foo app.</p>
{% endif %} {% endif %}
.. versionadded:: 1.5
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.
For example: For example:

View File

@ -55,8 +55,6 @@ interface to working with templates in class-based views.
override this to provide more flexible defaults when dealing with actual override this to provide more flexible defaults when dealing with actual
objects. objects.
.. versionadded:: 1.5
:class:`~django.views.generic.base.ContextMixin` :class:`~django.views.generic.base.ContextMixin`
Every built in view which needs context data, such as for rendering a Every built in view which needs context data, such as for rendering a
template (including ``TemplateResponseMixin`` above), should call template (including ``TemplateResponseMixin`` above), should call

View File

@ -680,11 +680,6 @@ In addition, some objects are automatically created just after
- three ``Permission`` for each model (including those not stored in that - three ``Permission`` for each model (including those not stored in that
database). database).
.. versionchanged:: 1.5
Previously, ``ContentType`` and ``Permission`` instances were created only
in the default database.
For common setups with multiple databases, it isn't useful to have these For common setups with multiple databases, it isn't useful to have these
objects in more than one database. Common setups include master / slave and objects in more than one database. Common setups include master / slave and
connecting to external databases. Therefore, it's recommended: connecting to external databases. Therefore, it's recommended:

View File

@ -639,20 +639,11 @@ that were modified more than 3 days after they were published::
>>> from datetime import timedelta >>> from datetime import timedelta
>>> 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 The ``F()`` objects support bitwise operations by ``.bitand()`` and
``.bitand()`` and ``.bitor()``
The ``F()`` objects now support bitwise operations by ``.bitand()`` and
``.bitor()``, for example:: ``.bitor()``, for example::
>>> F('somefield').bitand(16) >>> F('somefield').bitand(16)
.. versionchanged:: 1.5
The previously undocumented operators ``&`` and ``|`` no longer produce
bitwise operations, use ``.bitand()`` and ``.bitor()`` instead.
The pk lookup shortcut The pk lookup shortcut
---------------------- ----------------------

View File

@ -204,11 +204,6 @@ reverse order, from the bottom up. This means classes defined at the end of
Dealing with streaming responses Dealing with streaming responses
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. versionchanged:: 1.5
``response`` may also be an :class:`~django.http.StreamingHttpResponse`
object.
Unlike :class:`~django.http.HttpResponse`, Unlike :class:`~django.http.HttpResponse`,
:class:`~django.http.StreamingHttpResponse` does not have a ``content`` :class:`~django.http.StreamingHttpResponse` does not have a ``content``
attribute. As a result, middleware can no longer assume that all responses attribute. As a result, middleware can no longer assume that all responses

View File

@ -70,10 +70,6 @@ If you have multiple caches defined in :setting:`CACHES`, Django will use the
default cache. To use another cache, set :setting:`SESSION_CACHE_ALIAS` to the default cache. To use another cache, set :setting:`SESSION_CACHE_ALIAS` to the
name of that cache. 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 Once your cache is configured, you've got two choices for how to store data in
the cache: the cache:
@ -302,8 +298,6 @@ You can edit it multiple times.
.. method:: SessionBase.clear_expired .. method:: SessionBase.clear_expired
.. versionadded:: 1.5
Removes expired sessions from the session store. This class method is Removes expired sessions from the session store. This class method is
called by :djadmin:`clearsessions`. called by :djadmin:`clearsessions`.
@ -469,9 +463,7 @@ cookie will be sent on every request.
Similarly, the ``expires`` part of a session cookie is updated each time the Similarly, the ``expires`` part of a session cookie is updated each time the
session cookie is sent. session cookie is sent.
.. 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

@ -50,10 +50,6 @@ Optional arguments
The MIME type to use for the resulting document. Defaults to the value of The MIME type to use for the resulting document. Defaults to the value of
the :setting:`DEFAULT_CONTENT_TYPE` setting. the :setting:`DEFAULT_CONTENT_TYPE` setting.
.. versionchanged:: 1.5
This parameter used to be called ``mimetype``.
``status`` ``status``
The status code for the response. Defaults to ``200``. The status code for the response. Defaults to ``200``.
@ -129,11 +125,6 @@ Optional arguments
The MIME type to use for the resulting document. Defaults to the value of The MIME type to use for the resulting document. Defaults to the value of
the :setting:`DEFAULT_CONTENT_TYPE` setting. the :setting:`DEFAULT_CONTENT_TYPE` setting.
.. versionchanged:: 1.5
This parameter used to be called ``mimetype``.
Example Example
------- -------

View File

@ -1031,8 +1031,6 @@ in django-statici18n_.
Internationalization: in URL patterns Internationalization: in URL patterns
===================================== =====================================
.. versionadded:: 1.4
.. module:: django.conf.urls.i18n .. module:: django.conf.urls.i18n
Django provides two mechanisms to internationalize URL patterns: Django provides two mechanisms to internationalize URL patterns:

View File

@ -581,8 +581,6 @@ logging module.
.. class:: RequireDebugTrue() .. class:: RequireDebugTrue()
.. versionadded:: 1.5
This filter is similar to :class:`RequireDebugFalse`, except that records are This filter is similar to :class:`RequireDebugFalse`, except that records are
passed only when :setting:`DEBUG` is ``True``. passed only when :setting:`DEBUG` is ``True``.
@ -599,10 +597,5 @@ All messages reaching the ``django`` catch-all logger when :setting:`DEBUG` is
``True`` are sent to the console. They are simply discarded (sent to ``True`` are sent to the console. They are simply discarded (sent to
``NullHandler``) when :setting:`DEBUG` is ``False``. ``NullHandler``) when :setting:`DEBUG` is ``False``.
.. versionchanged:: 1.5
Before Django 1.5, all messages reaching the ``django`` logger were
discarded, regardless of :setting:`DEBUG`.
See also :ref:`Configuring logging <configuring-logging>` to learn how you can See also :ref:`Configuring logging <configuring-logging>` to learn how you can
complement or replace this default logging configuration. complement or replace this default logging configuration.

View File

@ -248,19 +248,13 @@ Methods
.. method:: Page.next_page_number() .. method:: Page.next_page_number()
Returns the next page number. Returns the next page number. Raises :exc:`InvalidPage` if next page
doesn't exist.
.. versionchanged:: 1.5
Raises :exc:`InvalidPage` if next page doesn't exist.
.. method:: Page.previous_page_number() .. method:: Page.previous_page_number()
Returns the previous page number. Returns the previous page number. Raises :exc:`InvalidPage` if previous
page doesn't exist.
.. versionchanged:: 1.5
Raises :exc:`InvalidPage` if previous page doesn't exist.
.. method:: Page.start_index() .. method:: Page.start_index()

View File

@ -141,14 +141,11 @@ sure that they are "appropriate" for saving before doing so. Of course, if you
trust your data source you could just save the object and move on. trust your data source you could just save the object and move on.
The Django object itself can be inspected as ``deserialized_object.object``. The Django object itself can be inspected as ``deserialized_object.object``.
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``::
.. versionadded:: 1.5 serializers.deserialize("xml", data, ignorenonexistent=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)
.. _serialization-formats: .. _serialization-formats:

View File

@ -132,10 +132,6 @@ Now, our ``my_callback`` function will be called each time a request finishes.
Note that ``receiver`` can also take a list of signals to connect a function Note that ``receiver`` can also take a list of signals to connect a function
to. to.
.. versionchanged:: 1.5
The ability to pass a list of signals was added.
.. admonition:: Where should this code live? .. admonition:: Where should this code live?
You can put signal handling and registration code anywhere you like. You can put signal handling and registration code anywhere you like.

View File

@ -217,8 +217,6 @@ Advanced features of ``TransactionTestCase``
.. attribute:: TransactionTestCase.reset_sequences .. attribute:: TransactionTestCase.reset_sequences
.. versionadded:: 1.5
Setting ``reset_sequences = True`` on a ``TransactionTestCase`` will make Setting ``reset_sequences = True`` on a ``TransactionTestCase`` will make
sure sequences are always reset before the test run:: sure sequences are always reset before the test run::

View File

@ -219,12 +219,6 @@ the Django test runner reorders tests in the following way:
* Then any other tests (e.g. doctests) that may alter the database without * Then any other tests (e.g. doctests) that may alter the database without
restoring it to its original state are run. 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.
.. note:: .. note::
The new ordering of tests may reveal unexpected dependencies on test case The new ordering of tests may reveal unexpected dependencies on test case
@ -587,11 +581,6 @@ Use the ``django.test.client.Client`` class to make requests.
When ``data`` is provided, it is used as the request body, and When ``data`` is provided, it is used as the request body, and
a ``Content-Type`` header is set to ``content_type``. a ``Content-Type`` header is set to ``content_type``.
.. versionchanged:: 1.5
:meth:`Client.options` used to process ``data`` like
:meth:`Client.get`.
The ``follow`` and ``extra`` arguments act the same as for The ``follow`` and ``extra`` arguments act the same as for
:meth:`Client.get`. :meth:`Client.get`.
@ -603,11 +592,6 @@ Use the ``django.test.client.Client`` class to make requests.
When ``data`` is provided, it is used as the request body, and When ``data`` is provided, it is used as the request body, and
a ``Content-Type`` header is set to ``content_type``. a ``Content-Type`` header is set to ``content_type``.
.. versionchanged:: 1.5
:meth:`Client.put` used to process ``data`` like
:meth:`Client.post`.
The ``follow`` and ``extra`` arguments act the same as for The ``follow`` and ``extra`` arguments act the same as for
:meth:`Client.get`. :meth:`Client.get`.
@ -627,15 +611,9 @@ Use the ``django.test.client.Client`` class to make requests.
When ``data`` is provided, it is used as the request body, and When ``data`` is provided, it is used as the request body, and
a ``Content-Type`` header is set to ``content_type``. a ``Content-Type`` header is set to ``content_type``.
.. versionchanged:: 1.5
:meth:`Client.delete` used to process ``data`` like
:meth:`Client.get`.
The ``follow`` and ``extra`` arguments act the same as for The ``follow`` and ``extra`` arguments act the same as for
:meth:`Client.get`. :meth:`Client.get`.
.. method:: Client.login(**credentials) .. method:: Client.login(**credentials)
If your site uses Django's :doc:`authentication system</topics/auth/index>` If your site uses Django's :doc:`authentication system</topics/auth/index>`
@ -931,25 +909,6 @@ to test the effects of commit and rollback:
database. This can cause your tests to pass or fail unexpectedly. Always database. This can cause your tests to pass or fail unexpectedly. Always
use ``TransactionTestCase`` when testing transactional behavior. use ``TransactionTestCase`` when testing transactional behavior.
.. versionchanged:: 1.5
Prior to 1.5, :class:`~django.test.TransactionTestCase` flushed the
database tables *before* each test. In Django 1.5, this is instead done
*after* the test has been run.
When the flush took place before the test, it was guaranteed that primary
key values started at one in :class:`~django.test.TransactionTestCase`
tests.
Tests should not depend on this behavior, but for legacy tests that do,
the :attr:`~TransactionTestCase.reset_sequences` attribute can be used
until 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`_.
``TransactionTestCase`` inherits from :class:`~django.test.SimpleTestCase`. ``TransactionTestCase`` inherits from :class:`~django.test.SimpleTestCase`.
TestCase TestCase
@ -975,11 +934,6 @@ additions, including:
* Django-specific assertions for testing for things like redirection and form * Django-specific assertions for testing for things like redirection and form
errors. errors.
.. versionchanged:: 1.5
The order in which tests are run has changed. See `Order in which tests are
executed`_.
``TestCase`` inherits from :class:`~django.test.TransactionTestCase`. ``TestCase`` inherits from :class:`~django.test.TransactionTestCase`.
.. _live-test-server: .. _live-test-server:
@ -1636,8 +1590,6 @@ your test suite.
.. method:: SimpleTestCase.assertXMLEqual(xml1, xml2, msg=None) .. method:: SimpleTestCase.assertXMLEqual(xml1, xml2, msg=None)
.. versionadded:: 1.5
Asserts that the strings ``xml1`` and ``xml2`` are equal. The Asserts that the strings ``xml1`` and ``xml2`` are equal. The
comparison is based on XML semantics. Similarly to comparison is based on XML semantics. Similarly to
:meth:`~SimpleTestCase.assertHTMLEqual`, the comparison is :meth:`~SimpleTestCase.assertHTMLEqual`, the comparison is
@ -1649,8 +1601,6 @@ your test suite.
.. method:: SimpleTestCase.assertXMLNotEqual(xml1, xml2, msg=None) .. method:: SimpleTestCase.assertXMLNotEqual(xml1, xml2, msg=None)
.. versionadded:: 1.5
Asserts that the strings ``xml1`` and ``xml2`` are *not* equal. The Asserts that the strings ``xml1`` and ``xml2`` are *not* equal. The
comparison is based on XML semantics. See comparison is based on XML semantics. See
:meth:`~SimpleTestCase.assertXMLEqual` for details. :meth:`~SimpleTestCase.assertXMLEqual` for details.
@ -1659,8 +1609,6 @@ your test suite.
.. method:: SimpleTestCase.assertInHTML(needle, haystack, count=None, msg_prefix='') .. method:: SimpleTestCase.assertInHTML(needle, haystack, count=None, msg_prefix='')
.. versionadded:: 1.5
Asserts that the HTML fragment ``needle`` is contained in the ``haystack`` one. Asserts that the HTML fragment ``needle`` is contained in the ``haystack`` one.
If the ``count`` integer argument is specified, then additionally the number If the ``count`` integer argument is specified, then additionally the number
@ -1671,8 +1619,6 @@ your test suite.
.. method:: SimpleTestCase.assertJSONEqual(raw, expected_data, msg=None) .. method:: SimpleTestCase.assertJSONEqual(raw, expected_data, msg=None)
.. versionadded:: 1.5
Asserts that the JSON fragments ``raw`` and ``expected_data`` are equal. Asserts that the JSON fragments ``raw`` and ``expected_data`` are equal.
Usual JSON non-significant whitespace rules apply as the heavyweight is Usual JSON non-significant whitespace rules apply as the heavyweight is
delegated to the :mod:`json` library. delegated to the :mod:`json` library.