Fixed #28148 -- Doc'd ImageField name validation concerns with the test client.

This commit is contained in:
Riccardo Magliocchetti 2017-05-06 19:14:15 +02:00 committed by Tim Graham
parent a7c6c705e8
commit bdf192c593
2 changed files with 15 additions and 1 deletions

View File

@ -742,6 +742,12 @@ Miscellaneous
* The signature of private API ``Widget.build_attrs()`` changed from * The signature of private API ``Widget.build_attrs()`` changed from
``extra_attrs=None, **kwargs`` to ``base_attrs, extra_attrs=None``. ``extra_attrs=None, **kwargs`` to ``base_attrs, extra_attrs=None``.
* File-like objects (e.g., :class:`~io.StringIO` and :class:`~io.BytesIO`)
uploaded to an :class:`~django.db.models.ImageField` using the test client
now require a ``name`` attribute with a value that passes the
:data:`~django.core.validators.validate_image_file_extension` validator.
See the note in :meth:`.Client.post`.
.. _deprecated-features-1.11: .. _deprecated-features-1.11:
Features deprecated in 1.11 Features deprecated in 1.11

View File

@ -235,7 +235,15 @@ Use the ``django.test.Client`` class to make requests.
file-processing code expects.) file-processing code expects.)
You may also provide any file-like object (e.g., :class:`~io.StringIO` or You may also provide any file-like object (e.g., :class:`~io.StringIO` or
:class:`~io.BytesIO`) as a file handle. :class:`~io.BytesIO`) as a file handle. If you're uploading to an
:class:`~django.db.models.ImageField`, the object needs a ``name``
attribute that passes the
:data:`~django.core.validators.validate_image_file_extension` validator.
For example::
>>> from io import BytesIO
>>> img = BytesIO(b'mybinarydata')
>>> img.name = 'myimage.jpg'
Note that if you wish to use the same file handle for multiple Note that if you wish to use the same file handle for multiple
``post()`` calls then you will need to manually reset the file ``post()`` calls then you will need to manually reset the file