From b04e6ec7cba4abc566c28fcb44009d086d9629fb Mon Sep 17 00:00:00 2001 From: Tommy Beadle Date: Fri, 3 Jun 2016 14:33:19 -0400 Subject: [PATCH] [1.10.x] Fixed #26704 -- Documented DjangoJSONEncoder. Backport of 729b9452b19b031d3817821128a115d5b2d5caed from master --- docs/ref/request-response.txt | 2 +- docs/topics/serialization.txt | 28 +++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/docs/ref/request-response.txt b/docs/ref/request-response.txt index bc6f796a10..7102c877da 100644 --- a/docs/ref/request-response.txt +++ b/docs/ref/request-response.txt @@ -950,7 +950,7 @@ types of HTTP responses. Like ``HttpResponse``, these subclasses live in JSON-serializable object. The ``encoder``, which defaults to - ``django.core.serializers.json.DjangoJSONEncoder``, will be used to + :class:`django.core.serializers.json.DjangoJSONEncoder`, will be used to serialize the data. See :ref:`JSON serialization ` for more details about this serializer. diff --git a/docs/topics/serialization.txt b/docs/topics/serialization.txt index 4793abfa1e..e176cd9ae0 100644 --- a/docs/topics/serialization.txt +++ b/docs/topics/serialization.txt @@ -253,9 +253,6 @@ Foreign keys just have the PK of the linked object as property value. ManyToMany-relations are serialized for the model that defines them and are represented as a list of PKs. -Date and datetime related types are treated in a special way by the JSON -serializer to make the format compatible with `ECMA-262`_. - Be aware that not all Django output can be passed unmodified to :mod:`json`. For example, if you have some custom type in an object to be serialized, you'll have to write a custom :mod:`json` encoder for it. Something like this will @@ -273,6 +270,31 @@ work:: Also note that GeoDjango provides a :doc:`customized GeoJSON serializer `. +``DjangoJSONEncoder`` +~~~~~~~~~~~~~~~~~~~~~ + +.. class:: django.core.serializers.json.DjangoJSONEncoder + +The JSON serializer uses ``DjangoJSONEncoder`` for encoding. A subclass of +:class:`~json.JSONEncoder`, it handles these additional types: + +:class:`~datetime.datetime` + A string of the form ``YYYY-MM-DDTHH:mm:ss.sssZ`` or + ``YYYY-MM-DDTHH:mm:ss.sss+HH:MM`` as defined in `ECMA-262`_. + +:class:`~datetime.date` + A string of the form ``YYYY-MM-DD`` as defined in `ECMA-262`_. + +:class:`~datetime.time` + A string of the form ``HH:MM:ss.sss`` as defined in `ECMA-262`_. + +:class:`~decimal.Decimal`, ``Promise`` (``django.utils.functional.lazy()`` objects), :class:`~uuid.UUID` + A string representation of the object. + +.. versionchanged:: 1.10 + + Support for ``Promise`` was added. + .. _ecma-262: http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15 YAML