Примечания к выпуску¶
Версионирование¶
Минорные номера версий (0.0.x) используются для изменений, совместимых с API. Вы должны иметь возможность переходить от одной минорной версии к другой без каких-либо других изменений кода.
Средние номера версий (0.x.0) могут включать изменения API, в соответствии с deprecation policy. Перед обновлением между средними версиями следует внимательно прочитать примечания к выпуску.
Основные номера версий (x.0.0) зарезервированы для существенных этапов проекта.
Политика амортизации¶
Релизы фреймворка REST следуют формальной политике обесценивания, которая соответствует Django’s deprecation policy.
Временная шкала устаревания функции, присутствующей в версии 1.0, будет выглядеть следующим образом:
Версия 1.1 останется полностью обратно совместимой с 1.0, но будет выдавать
RemovedInDRF13Warning
предупреждения, подклассыPendingDeprecationWarning
, если вы используете функции, которые должны быть устаревшими. Эти предупреждения молчащие по умолчанию , но могут быть явно включены, когда вы будете готовы начать перенос необходимых изменений. Например, если вы начнете проводить тесты, используяpython -Wd manage.py test
, вы будете предупреждены о любых изменениях в API, которые вам необходимо сделать.Версия 1.2 переводит эти предупреждения в подкласс
DeprecationWarning
, который по умолчанию является громким.Версия 1.3 полностью удалит устаревшие части API.
Обратите внимание, что в соответствии с политикой Django, любые части фреймворка, не упомянутые в документации, следует рассматривать как частные API, и они могут быть изменены.
Обновление¶
Чтобы обновить фреймворк Django REST до последней версии, используйте pip:
pip install -U djangorestframework
Вы можете определить текущую установленную версию, используя pip show
:
pip show djangorestframework
Серия 3.12.x¶
3.12.4¶
Дата: 26 марта 2021 года
Верните использование
deque
вместоlist
для отслеживания дросселирования.history
. (Из-за несовместимости с бэкендом кэша DjangoRedis. См. #7870) [#7872].
3.12.3¶
Дата: 25 марта 2021 года
Правильная обработка ATOMIC_REQUESTS при использовании нескольких конфигураций базы данных. [#7739]
Обход запроса
COUNT
, когда настроенLimitOffsetPagination
, но параметры пагинации не включены в запрос. [#6098]Уважение
allow_null=True
наDecimalField
. [#7718]Разрешить заглавные
"Yes"
/**"No"
значения сBooleanField
. [#7739]Добавьте метод
PageNumberPagination.get_page_number()
для переопределения поведения. [#7652]Исправлено отображение значений timedelta в схемах OpenAPI, когда они присутствуют как поля по умолчанию, min или max. [#7641]
Отображение JSON-полей с отступами в просматриваемых формах API. [#6243]
Удалите ненужный запрос к базе данных в представлениях admin Token. [#7852]
Вызывать ошибки валидации, когда в поля
PrimaryKeyRelatedField
передаются bools, вместо приведения к ints. [#7597]Не включайте свойства модели в качестве автоматически генерируемых полей упорядочивания с
OrderingFilter
. [#7609]Используйте
deque
вместоlist
для отслеживания дросселирования.history
. [#7849]
3.12.2¶
Дата: 13 октября 2020 года
Исправление проблемы, если
rest_framework.authtoken.models
импортирован, ноrest_framework.authtoken
отсутствует в INSTALLED_APPS. [#7571]Игнорировать подклассы BrowsableAPIRenderer в схеме OpenAPI. [#7497]
Более узкий отлов исключений в полях serilizer, чтобы гарантировать, что любые ошибки в неработающих методах
get_queryset()
не будут замаскированы. [#7480]
3.12.0¶
Дата: 28 сентября 2020 года
Добавьте опцию
--file
к командеgenerateschema
. [#7130]Поддержка
tags
для генерации схем OpenAPI. См. the schema docs. [#7184]Поддержка настройки идентификатора операции для генерации схемы. См. the schema docs. [#7190]
Поддержка компонентов OpenAPI для генерации схем. См. the schema docs. [#7124]
Следующие методы на
AutoSchema
становятся общедоступными API:get_path_parameters
,get_pagination_parameters
,get_filter_parameters
,get_request_body
,get_responses
,get_serializer
,get_paginator
,map_serializer
,map_field
,map_choice_field
,map_field_validators
,allows_filters
. См. the schema docsДобавьте поддержку базы данных-агностики в Django 3.1
JSONField
. [#7467]SearchFilter
теперь поддерживает вложенный поиск по полям моделиJSONField
иHStoreField
. [#7121]SearchFilter
теперь поддерживает поиск по полямannotate()
. [#6240]Модель authtoken больше не раскрывает
pk
в URL-адресе администратора. [#7341]Добавьте
__repr__
для экземпляров запроса. [#7239]Декодирование UTF-8 с отступлением от Latin-1 для основных учетных данных. [#7193]
CharField обрабатывает суррогатные символы как ошибку валидации. [#7026]
Не включайте callables в схемы в качестве значений по умолчанию. [#7105]
Улучшите вывод схемы
ListField
, чтобы она включала всю доступную информацию о дочерних элементах. [#7137]Разрешите включать
default=False
для выводов схемыBooleanField
. [#7165]Включите информацию
"type"
в выводы схемыChoiceField
. [#7161]Включите
"type": "object"
в объекты схемы. [#7169]Не включайте компонент в вывод схемы для запросов DELETE. [#7229]
Исправьте типы схем для
DecimalField
. [#7254]Исправьте генерацию схемы для представления
ObtainAuthToken
. [#7211]Поддержка передачи
context=...
в методы вида.get_serializer()
. [#7298]Передавайте пользовательский код в
PermissionDenied
, если класс разрешения имеет один набор. [#7306]Включите «пример» в вывод пагинации схемы. [#7275]
Код состояния по умолчанию 201 при выводе схемы для POST-запросов. [#7206]
Используйте camelCase для идентификаторов операций при выводе схемы. [#7208]
Предупреждение о существовании дублирующихся идентификаторов операций в выводе схемы. [#7207]
Улучшена обработка десятичного типа при отображении
ChoiceField
на вывод схемы. [#7264]Отключите псевдонимы YAML для вывода схем OpenAPI. [#7131]
Исправьте имена URL-адресов действий для API, включенных в URL с разделенными именами. [#7287]
Обновите версию jQuery с 3.4 до 3.5. [#7313]
Исправьте обработку
UniqueTogether
, когда поля сериализатора используютsource=...
. [#7143]HTTP
HEAD
запросы теперь правильно устанавливаютself.action
на экземпляре ViewSet. [#7223]Возвращает действительную схему OpenAPI для случая, когда пути к схеме API не существует. [#7125]
Включите тесты в дистрибутив пакета. [#7145]
Разрешить средствам проверки типов поддерживать аннотации типа
ModelSerializer[Author]
. [#7385]Не включайте недопустимую часть
charset=None
в заголовок запросаContent-Type
при использовании APIClient. [#7400]Исправьте
Z
/**z
токены в регексах OpenAPI. [#7389]Исправьте
PrimaryKeyRelatedField
иHyperlinkedRelatedField
, когда поле источника на самом деле является свойством. [#7142]Token.generate_key
теперь является методом класса. [#7502]@action
предупреждает, если метод обернут в декоратор, который не сохраняет информацию, используя@functools.wraps
. [#7098]
Серия 3.11.x¶
3.11.2¶
Дата: 30 сентября 2020 г.
Безопасность: Отказ от тега шаблона
urlize_quoted_links
в пользу встроенного в Djangourlize
. Устраняет XSS-уязвимость для некоторых видов контента в browsable API.
3.11.0¶
Дата: 12 декабря 2019 г.
Drop
.set_context
API in favour of a ``requires_context:doc:` marker <3.11-announcement#validator-default-context>`.Виджет по умолчанию для текстового поля с вариантами выбора заменен на поле выбора. #6892
Поддерживается вложенная запись в нереляционные поля, такие как JSONField. #6916
Включение типов носителей запросов/ответов в схемы OpenAPI на основе настроенных парсеров/рендереров. #6865
Включать описания операций в схемы OpenAPI, основываясь на docstring представления. #6898
Исправьте представление сериализаторов со всеми необязательными полями в схемах OpenAPI. #6941
Исправьте представление
serializers.HStoreField
в схемах OpenAPI. #6914Исправьте генерацию OpenAPI, когда не указаны название или версия. #6912
Используйте представление
int64
для больших целых чисел в схемах OpenAPI. #7018Улучшены сообщения об ошибках, если в подклассе поля не предусмотрена реализация
.to_representation
. #6996Исправление для классов сериализатора, использующих множественное наследование. #6980
Исправление реверсирования полей URL с гиперссылками с компонентами в процентном кодировании в пути. #7059
Обновите bootstrap до версии 3.4.1. #6923
Серия 3.10.x¶
3.10.3¶
Дата: 4 сентября 2019 г.
Включить версию API в генерацию схемы OpenAPI, по умолчанию - пустая строка.
Добавьте свойства пагинации в схемы ответов OpenAPI.
Добавьте отсутствующее свойство «description» в схемы ответов OpenAPI.
Включать «required» только для непустых случаев в схемах OpenAPI.
Исправьте схемы ответов для случая «DELETE» в схемах OpenAPI.
Используйте тип массива для схем ответов представления списка.
Используйте последовательный стиль
lowerInitialCamelCase
в идентификаторах операций OpenAPI.Исправьте
minLength
/**maxLength
/**minItems
/**maxItems
свойства в схемах OpenAPI.Вызывайте
FileField.url
только один раз при сериализации для повышения производительности.Устранение побочного случая, когда расчеты дросселирования могли ошибаться после изменения конфигурации.
3.10.2¶
Дата: 29 июля 2019 г.
Различные исправления схемы
OpenAPI
.Возможность указать urlconf в include_docs_urls.
3.10.1¶
Дата: 17 июля 2019 г.
Не включайте поля автозаполнения в TokenAuth admin, поскольку это накладывает ограничения на пользовательские модели пользователей и admin.
Требуется
uritemplate
для генерации схемы OpenAPI, но неcoreapi
.
3.10.0¶
Дата : 15th July 2019
Переключитесь на генерацию схемы OpenAPI.
Отказ от поддержки Python 2.
Добавить опцию CLI
generateschema --generator_class
Обновлена зависимость PyYaml для генерации схемы OpenAPI до
pyyaml>=5.1
#6680.Разрешить DeprecationWarning с помощью markdown. #6317
Используйте
user.get_username
в шаблонах, предпочитаяuser.username
.Исправление проблемы с пагинацией курсора, которая могла возникнуть после удаления объектов.
Исправление для нулевых полей с
source="*"
Всегда применяйте все классы дросселирования во время проверок дросселирования.
Обновление зависимостей jQuery и Markdown.
Не стоит строго запрещать избыточные аргументы имени поля
SerializerMethodField
.Не выполняйте дополнительные действия в browable API, если вы не аутентифицированы.
Удаление нулевых символов из параметров поиска.
Утрачиваем декоратор
detail_route
в пользуaction
, который принимаетdetail
bool. Вместо него используйте@action(detail=True)
. gh6687Утрачиваем декоратор
list_route
в пользуaction
, который принимаетdetail
bool. Вместо него используйте@action(detail=False)
. gh6687
серия 3.9.x¶
3.9.4¶
Дата: 10 мая 2019 г.
Это поддерживающий выпуск, в котором исправлена ошибка обработки ошибок в Python 2.
3.9.3¶
Дата: 29 апреля 2019 г.
Это последний выпуск Django REST Framework, который будет поддерживать Python 2. Обязательно перейдите на Python 3 перед обновлением до Django REST Framework 3.10.
Скорректирована проверка совместимости для django-guardian, чтобы последняя версия guardian (v1.4.9) была совместима с Python 2. #6613
3.9.2¶
Дата : 3rd March 2019
Маршрутизаторы: аннулировать кэш
_urls
наregister()
#6407Отложите создание рендеринга схемы, чтобы избежать необходимости использования pyyaml. #6416
Добавлен блок „request_forms“ в base.html #6340
Исправлена функция SchemaView для сброса рендеринга при исключении. #6429
Обновление зависимости Django Guardian. #6430
Обеспечена поддержка Django 2.2 #6422 & #6455
Сделана совместимость шаблонов с сессионным CSRF. #6207
Поле
validators
адаптировано для приема не списочных итераций. #6282Добавлен хук SearchFilter.get_search_fields(). #6279
Исправьте DeprecationWarning при обращении к классам collections.abc через collections #6268
Разрешенные Q-объекты в интроспекции limit_choices_to. #6472
Добавлена ленивая оценка для составленных разрешений. #6463
Добавьте оператор отрицания ~ к композиции разрешений #6361
Избегайте вызова distinct для аннотированных полей в SearchFilter. #6240
Введены классы
RemovedInDRF…Warning
для упрощения обесценивания. #6480
3.9.1¶
Дата : 16th January 2019
Устранение проблемы XSS в просматриваемом API. #6330
Обновите Bootstrap до версии 3.4.0, чтобы решить проблему XSS.
Устранение проблем с композитными разрешениями. #6299
Соблюдать
limit_choices_to
на внешних ключах. #6371
3.9.0¶
Дата : 18th October 2018
Улучшения в дополнительных действиях ViewSet #5605
Исправить поддержку суффиксов ViewSet
action
#6081Разрешить
action
разделы документации #6060Избавьтесь от аргумента
Router.register
base_name
в пользуbasename
. #5990Избавьтесь от метода
Router.get_default_base_name
в пользуRouter.get_default_basename
. #5990Измените
CharField
, чтобы запретить нулевые байты. #6073 Чтобы вернуться к старому поведению, подклассCharField
и удалитеProhibitNullCharactersValidator
из валидаторов. … code-block:: pythonДобавьте команды управления
OpenAPIRenderer
иgenerate_schema
. #6229Добавьте OpenAPIRenderer по умолчанию и добавьте документацию по схемам. #6233
Разрешить составление разрешений #5753
Разрешить nullable BooleanField в Django 2.1 #6183
Добавьте тестирование поддержки Python 3.7 #6141
Тестирование с использованием Django 2.1 финального релиза. #6109
Добавлен djangorestframework-datatables в пакеты сторонних разработчиков #5931
Изменить формат даты ISO 8601, чтобы исключить варианты только год/месяц #5936.
Обновите все URL-адреса pypi.python.org до pypi.org #5942.
Убедитесь, что в html-формах (данные многочастных форм) соблюдаются необязательные поля #5927.
Разрешить хэширование ErrorDetail. #5932
Корректный разбор схемы для JSONField #5878
Рендеринг описаний (из help_text) с использованием безопасного #5869
Удалено входное значение из deault_error_message #5881
Добавлена поддержка min_value/max_value в поле DurationField #5643
Исправлено перезаписывание экземпляра в блоке try/except оптимизации только для pk #5747.
Исправлена ошибка AttributeError в фильтре элементов, когда значение равно None #5981.
Исправлена ошибка Javascript
e.indexOf
не является функцией #5982Исправьте схемы для дополнительных действий #5992
Улучшено get_error_detail для использования error_dict/error_list #5785
Улучшение URL-адресов в рендере Admin #5988
Добавить раздел «Сообщество» в документацию, незначительная очистка #5993.
Перемещение импорта опекунов из совместимости #6054
Утрачиваем класс
DjangoObjectPermissionsFilter
, перемещенный в пакетdjangorestframework-guardian
. #6075Отказаться от поддержки Django 1.10 #5657
Ловить только TypeError/ValueError для поиска объектов #6028
Работа с моделями без менеджера .objects в ModelSerializer. #6111
Улучшите сообщение об ошибке ModelSerializer.create(). #6112
Исправьте ошибку проверки куки CSRF при использовании session auth с django 1.11.6+ #6113
Обновлена документация по JWT. #6138
Исправление автоскейпа, не передаваемого в фильтр urlize_quoted_links #6191
серия 3.8.x¶
3.8.2¶
Дата : 6th April 2018
Исправьте валидацию
read_only
+default
unique_together
. #5922authtoken.views import coreapi из rest_framework.compat, не напрямую. #5921
Документы: Добавьте недостающий аргумент „detail“ в Маршрут #5920
3.8.1¶
Дата : 4th April 2018
Используйте старое поведение
url_name
в декораторах маршрутов #5915Для
list_route
иdetail_route
сохраняется старое поведениеurl_name
, основанное наurl_path
вместо имени функции.
3.8.0¶
Дата : 3rd April 2018
Перемена: Изменить поведение
read_only
плюсdefault
. #5886Поля
read_only
теперь всегда будут исключаться из записываемых полей.Ранее поля
read_only
со значениемdefault
использовалиdefault
для операций создания и обновления.Чтобы сохранить старое поведение, вам может понадобиться передать значение полей
read_only
при вызовеsave()
в представлении:def perform_create(self, serializer): serializer.save(owner=self.request.user) Alternatively you may override ``save()`` or ``create()`` or ``update()`` on the serializer as appropriate.
Исправьте поведение allow_null, когда required=False #5888
Без явного
default
,allow_null
подразумевает значение по умолчаниюnull
для исходящей сериализации. Ранее такие поля пропускались, если были доступны только для чтения или не требовались.Возможно нарушение обратной совместимости, если вы полагались на то, что такие поля будут исключены из исходящего представления. Чтобы восстановить старое поведение, вы можете переопределить
data
, чтобы исключить поле, когдаNone
.Например:
@property def data(self): """ Drop `maybe_none` field if None. """ data = super().data if 'maybe_none' in data and data['maybe_none'] is None: del data['maybe_none'] return data
Рефакторинг динамической генерации маршрутов и улучшение интроспективности действий набора представлений. #5705
<<< 0 >>** s были предоставлены новые атрибуты и методы, которые позволяют ему интроспектировать свой набор действий и детали текущего действия.
Объединил
list_route
иdetail_route
в один декораторaction
.Получить все дополнительные действия на
ViewSet
с.get_extra_actions()
.Дополнительные действия теперь устанавливают
url_name
иurl_path
на декорированный метод.url_name
теперь основывается на имени функции, вместоurl_path
, так как путь не всегда подходит (например, перехват аргументов в пути).Включить реверсирование url действия через метод
.reverse_action()
(добавлено в 3.7.4)Пример обратного вызова:
self.reverse_action(self.custom_action.url_name)
Добавьте иниткварг
detail
, чтобы указать, работает ли текущее действие с коллекцией или с одним экземпляром.Дополнительные изменения:
Устранены
list_route
&detail_route
в пользу декоратораaction
сdetail
boolean.Отменены варианты динамического списка/детального маршрута в пользу
DynamicRoute
с булевойdetail
.Переработана динамическая генерация маршрутов маршрутизатора.
list_route
иdetail_route
сохраняют старое поведениеurl_name
, основываясь наurl_path
вместо имени функции.
Исправьте форматирование заметки о выпуске 3.7.4 #5704
Документы: Обновление ссылок на DRF Writable Nested Serializers #5711
Документы: Исправлена опечатка в примере URL-адресов авторизации. #5713
Улучшение ошибок дочерних композитных полей #5655
Отключить HTML-вводы для полей диктовки/списка #5702
Исправьте опечатку в документе HostNameVersioning doc #5709
Используйте rsplit для получения имени модуля и класса для импорта #5712
Формализовать URLPatternsTestCase #5703
Добавить тест перевода исключений #5700
Test staticfiles #5701
Добавить drf-yasg в документацию и схему сторонних пакетов #5720
Удалите неиспользуемые
compat._resolve_model()
#5733Устранение обходного пути для неподдерживаемого Python 3.2 #5734.
Предпочтение
iter(dict)
передiter(dict.keys())
#5736Передайте аргумент
python_requires
в setuptools #5739Удалите неиспользуемые ссылки из документации #5735
Предпочитать протокол https для ссылок в документации, когда это доступно #5729
Добавить HStoreField, тесты полей postgres #5654
Всегда полностью квалифицируйте ValidationError в документации #5751.
Удалить недоступный код из ManualSchema #5766
Разрешена настройка примеров кода документации API #5752
Обновлена документация для использования
pip show
#5757.Загружать „static“ вместо „staticfiles“ в шаблонах #5773
Исправлена опечатка в
fields
документации #5783См. «NamespaceVersioning» вместо «NamespacedVersioning» в документации #5754.
ErrorDetail: добавить
__eq__
/**__ne__
и__repr__
#5787Замените
background-attachment: fixed
в документации #5777Сделать 404 и 403 ответы согласованными с
exceptions.APIException
выводом #5763Небольшое исправление в документации API: схемы #5796.
Исправьте генерацию схемы для PrimaryKeyRelatedField #5764
Представить сериализатор DictField как объект в схеме #5765
Добавлена документация с примером повторной реализации ObtainAuthToken #5802.
Добавьте схему к представлению ObtainAuthToken #5676
Исправьте обработку данных формы запроса #5800
Исправление импорта представлений authtoken #5818
Обновление pytest, isort #5815 #5817 #5894
Исправлена обработка активного часового пояса для дат, отличных от ISO8601. #5833
Заставил TemplateHTMLRenderer отображать входы IntegerField, когда значение
0
. #5834Исправлена конечная точка в инструкциях по обучению #5835
Добавьте ролевые фильтры Django Rest Framework в пакеты третьих сторон #5809.
Используйте единственную копию статических активов. Обновление jQuery #5823
Измените тернарные условия, чтобы они соответствовали стандарту PEP308 #5827
Добавлены ссылки на руководства „A Todo List API with React“ и „Blog API“ #5837.
Исправьте опечатку в комментарии в ModelSerializer #5844
Добавьте администратора к установленным приложениям, чтобы избежать сбоев при тестировании. #5870
Исправлена схема для UUIDField в SimpleMetadata. #5872
Исправлена документация по включению маршрутизатора с пространствами имен. #5843
Тест использования объектов модели для точечного источника по умолчанию #5880
Разрешить обход нулевых связанных полей #5849
Добавлено: Учебник: Django REST с React (Django 2.0) #5891.
Добавьте
LimitOffsetPagination.get_count
, чтобы разрешить переопределение метода #5846Не показывать скрытые поля в метаданных #5854
Разрешить OrderingFilter обрабатывать пустой кортеж (или список) для поля „ordering“. #5899
Добавлены обработчики типовых ошибок 500 и 400 JSON. #5904
Серия 3.7.x¶
3.7.7¶
Дата : 21st December 2017
Исправьте опечатку для включения файлов локали .mo в упаковку. :doc:`#5697 <https://github.com/encode/django-rest-framework/issues/5697>`* , #5695
3.7.5¶
Дата : 21st December 2017
Добавьте недостающие файлы шрифтов *.woff2 в упаковку. #5692
Добавьте недостающие файлы локали .mo в упаковку. :doc:`#5695 <https://github.com/encode/django-rest-framework/issues/5695>`* , #5696
3.7.4¶
Дата : 20th December 2017
Схема: Метод извлечения для обработки
manual_fields
#5633Позволяет легче настраивать обработку
manual_fields
, например, для обеспечения ручных полей для каждого метода.AutoSchema
добавляетget_manual_fields
, как предполагаемую точку переопределения, и вспомогательный методupdate_fields
, для обработки замены полей по имени из списка, который, в общем случае, вы не должны переопределять.Примечание:
AutoSchema.__init__
теперь гарантирует, чтоmanual_fields
является списком. Ранее он мог храниться внутри списка какNone
.Удалите шим совместимости ulrparse; вместо него используйте шесть #5579
Убрать обертку совместимости для
TimeDelta.total_seconds()
#5577Очистите все пробельные символы во всем проекте #5578
Очистка совместимости #5581
Добавьте блок pygments CSS в просматриваемые представления API #5584 #5587
Удалить
set_rollback()
из сочетания #5591Исправьте доступ к телу запроса/POST #5590
Переименуйте тест для ссылки на правильную проблему #5610
Исправления в документации #5611 #5612
Удалите ссылки на неподдерживаемые версии Django в документации и коде #5602
Тест исключения сериализатора для объявленных полей #5599
Исправлена генерация схем для бэкендов фильтров #5613
Небольшая очистка для тестов ModelSerializer #5598
Реализовать доступ к атрибуту запроса с
__getattr__
#5617Исправлено SchemaJSRenderer отображает недопустимый Javascript #5607
Сделать поддержку Django 2.0 официальной/явной #5619.
Выполните проверку типа переданного аргумента запроса #5618
Исправьте скрытие AttributeError на аутентификаторах запросов #5600
Обновление требований к тестам #5626
Документы:
Serializer._declared_fields
разрешить изменение полей на сериализаторе #5629Исправить упаковку #5624
Исправление рендеринга readme для PyPI, добавление сборки readme в CI #5625.
Обновить учебник #5622
Не обязательные поля с
allow_null=True
не должны подразумевать значение по умолчанию #5639Документы: Добавить примечание о выводе сериализации
allow_null
#5641Обновление для использования релиза Django 2.0 в tox.ini #5645
Исправление
Serializer.data
для рендеринга Browsable API при предоставлении недействительныхdata
#5646Документы: Обратите внимание на ограничения AutoSchema на голом APIView #5649
Добавьте
.basename
и.reverse_action()
в ViewSet #5648Документы: Исправьте опечатки в документации по сериализаторам #5652
Fix
override_settings
compat #5668Добавьте параметр DEFAULT_SCHEMA_CLASS #5658
Добавить примечание к документации о том, что сгенерированное поле BooleanField может быть
required=False
#5665.Добавить сборку „dist“ #5656
Исправьте опечатку в строке docstring #5678
Документы: Добавить
UNAUTHENTICATED_USER = None
примечание #5679Обновление примера OPTIONS из «Documenting Your API» #5680.
Документы: Добавьте примечание о разрешениях объектов для FBVs #5681
Документы: Добавить пример в
to_representation
docs #5682Добавить ссылку на Classy DRF в документацию #5683
Документ ViewSet.action #5685
Исправьте опечатку в документах схемы #5687
Исправление разбора шаблона URL при генерации схемы #5689
Добавьте пример использования
source=‘*’
в документацию по пользовательским полям. #5688Исправьте поведение format_suffix_patterns с маршрутами path() в Django 2 #5691.
3.7.3¶
Дата : 6th November 2017
Исправьте ошибку
AppRegistryNotReady
из импорта представления contrib.auth #5567
3.7.2¶
Дата : 6th November 2017
Исправлена совместимость с Django 2.1 из-за удаления представлений django.contrib.auth.login()/logout(). #5510
Добавьте недостающий импорт для TextLexer. #5512
Добавление примеров и документации по кэшированию #5514
Включить формат даты и времени для генерации схемы #5511
Используйте тройные обратные знаки для блоков кода разметки #5513
Интерактивные документы - сделать нижние элементы боковой панели липкими #5516
Уточнить проверку системы пагинации #5524
Остановить JSONBoundField, обрабатывающий недействительный JSON #5527
Приведите JSONField к виду textarea в Browsable API #5530
Схема: Исключение OPTIONS/HEAD для действий ViewSet #5532
Исправьте упорядочивание для точечных источников #5533
Исправить: Поля с
allow_null=True
должны подразумевать значение сериализации по умолчанию #5518Убедитесь, что заголовок Location является строго „str“, а не подклассом. #5544
Добавьте импорт к примеру в api-guide/parsers #5547
Catch OverflowError для «out of range» datetimes #5546
Добавьте djangorestframework-rapidjson в пакеты сторонних разработчиков #5549
Увеличение тестового покрытия для команды
drf_create_token
#5550Добавьте классификатор trove для поддержки Python 3.6. #5555
Добавьте поддержку кэширования pip в конфигурацию Travis CI #5556
Переименуйте раздел [**
wheel
] в [**bdist_wheel
], так как первый является наследием #5557.Исправьте предупреждения об обесценивании недопустимой управляющей последовательности #5560
Добавить шаблон ошибок интерактивных документов #5548
Добавьте параметр округления к DecimalField #5562
Исправьте все BytesWarning, пойманные во время тестов #5561.
Используйте литералы dict и set вместо вызовов dict() и set() #5559
Измените шаблон валидации ImageField, используйте валидаторы из DjangoImageField #5539
Исправление обработки символов юникода в query_string в Python 2 #5552
3.7.1¶
Дата : 16th October 2017
Исправление Интерактивная документация всегда использует false для булевых полей в запросах #5492
Улучшение совместимости с Django 2.0 alpha. #5500 #5503
Улучшена обработка коллизий именования схем #5486
Добавлена дополнительная документация и тесты, касающиеся предоставления значения по умолчанию для точечных полей
source
#5489
3.7.0¶
Дата : 6th October 2017
Исправьте
DjangoModelPermissions
для обеспечения аутентификации пользователя перед вызовом метода представленияget_queryset()
. В качестве побочного эффекта это изменяет порядок проверки разрешений и аутентификации HTTP-метода, и ответы 405 будут возвращаться только при аутентификации. Если вы хотите повторить старое поведение, подробности см. в PR. #5376Утратил силу
exclude_from_schema
на декоратореAPIView
иapi_view
. Установитеschema = None
или@schema(None)
в зависимости от ситуации. #5422Теперь
DateTimeField
с учетом часового пояса при сериализации учитывается активное значение или значение по умолчаниюtimezone
, вместо того, чтобы всегда использовать UTC. #5435Устранение несоответствия, при котором экземпляры сериализовались с указанным временем даты для
create
, но UTC дляretrieve
. #3732Возможное нарушение обратной совместимости, если вы полагались на то, что строки времени даты будут соответствовать UTC. При необходимости, клиент должен интерпретировать время даты или set default or active timezone (docs) в UTC.
Удален DjangoFilterBackend в соответствии с политикой обесценивания. Вместо этого используйте
django_filters.rest_framework.FilterSet
и/илиdjango_filters.rest_framework.DjangoFilterBackend
. #5273- Не вычеркивайте микросекунды из
time
при кодировании. Это соответствуетdatetime
. BC Change : Ранее кодировались только миллисекунды. #5440
- Не вычеркивайте микросекунды из
- Добавлена настройка
STRICT_JSON
(по умолчаниюTrue
) для исключения расширенных значений float (**nan
,inf
,-inf
), принимаемых модулем Pythonjson
. BC Change : Ранее эти значения преобразовывались в соответствующие строки. Установите
STRICT_JSON
вFalse
, чтобы восстановить прежнее поведение. #5265
- Добавлена настройка
Добавить поддержку параметра
page_size
в классе CursorPaginator #5250- Сделайте
DEFAULT_PAGINATION_CLASS
None
по умолчанию. BC Change : Если вы просто установили
PAGE_SIZE
, чтобы включить пагинацию, вам нужно добавитьDEFAULT_PAGINATION_CLASS
. Предыдущее значение по умолчанию былоrest_framework.pagination.PageNumberPagination
. Для этого предусмотрено предупреждение о проверке системы. Вы можете промолчать об этом, если вы устанавливаете класс пагинации на основе каждого просмотра. #5170
- Сделайте
Отлавливайте
APIException
отget_serializer_fields
при генерации схемы. #5443Разрешить пользовательские классы аутентификации и разрешений при использовании
include_docs_urls
#5448Отложите оценку переведенных строк на валидаторах. #5452
Добавлено значение по умолчанию для параметра „detail“ в исключение „ValidationError“ #5342
Скорректируйте правила схемы get_filter_fields для соответствия фреймворку #5454
- Обновленная матрица тестов добавляет Django 2.0 и исключает Django 1.8 и 1.9
BC Change : Это удаляет Django 1.8 и Django 1.9 из поддерживаемых версий Django REST Framework. #5457
Исправлено предупреждение об устаревании в serializers.ModelField #5058.
Добавлено более явное сообщение об ошибке, когда
get_queryset
возвращаетNone
#5348Исправьте документацию для ответа
data
описание #5361Исправить pycache /.pyc исключения при упаковке #5373.
Исправьте обработку значений по умолчанию для точечных источников #5375
Убедитесь, что content_type установлен при передаче пустого тела в RequestFactory #5351
Исправить документацию ErrorDetail #5380
Разрешить необязательное содержание в форме общего содержания #5372
Обновлены поддерживаемые значения для поля NullBooleanField #5387.
Исправление пользовательских именованных полей ModelSerializer с источником на модели #5388
Исправлен пример документации MultipleFieldLookupMixin для правильной проверки разрешения на уровне объекта #5398.
Обновление примера get_object() в permissions.md #5401
Исправьте команду управления authtoken #5415
Исправить генерацию схемы разметки #5421
Разрешить динамически устанавливать
ChoiceField.choices
#5426Добавьте макет проекта в быстрый старт #5434
Повторное использование функции „apply_markdown“ в шаблоне „render_markdown“ #5469
Добавлены ссылки на пакет
drf-openapi
в документации #5470Добавлена подсветка кода docstrings с помощью pygments #5462.
Исправлено отображение документации для представлений с именами
data
#5472Документы: Уточнено поведение валидации „to_internal_value()“ #5466
Исправьте недостающий вызов six.text_type() в APIException.** str #5476
Документ documentation.py #5478
Исправление коллизий именования в генерации схем #5464
Вызовите функцию Django authenticate с объектом запроса #5295.
Обновление coreapi JS до версии 0.1.1 #5479
Have
is_list_view
распознать RetrieveModel… views #5480Удалите код совместимости с Django 1.8 и 1.9 #5481
Удалите устаревший код схемы из DefaultRouter #5482
- Переработайте генерацию схем, чтобы обеспечить возможность настройки для каждого вида.
BC Change :
SchemaGenerator.get_serializer_fields
был рефакторингован какAutoSchema.get_serializer_fields
и исключен аргументview
[#5354][gh5354]
Серия 3.6.x¶
3.6.4¶
Дата : 21st August 2017
Игнорировать любые неверно сформированные параметры запроса для OrderingFilter. #5131
Улучшение объема памяти при чтении больших запросов JSON. #5147
Исправьте генерацию схемы для пагинации. #5161
Исправьте исключение, когда
HTML_CUTOFF
устанавливается вNone
. #5174Исправление API browsable, не поддерживающего корректно
multipart/form-data
. #5176Исправлено
test_hyperlinked_related_lookup_url_encoded_exists
. #5179Убедитесь, что max_length находится в kwargs FileField. #5186
Исправьте
list_route
&detail_route
с kwargs содержит фигурную скобку вurl_path
#5187Добавьте команду Django manage для создания пользователя DRF Token. #5188
Убедитесь, что шаблоны документации API не проверяют аутентификацию пользователя #5162
Исправьте особый случай, когда поле OneToOneField также является первичным ключом. #5192
Добавлена aria-label и новый регион для целей доступности в base.html #5196
Цитирование вложенных параметров API в api.js. #5214
Установите ViewSet args/kwargs/request перед отправкой. #5229
Добавлена поддержка юникода в SlugField. #5231
Исправьте появление HiddenField в начальном содержимом формы Raw Data. #5259
Вызывать ошибку валидации при неверном разборе часового пояса. #5261
Исправьте поведение/производительность SearchFilter to-many. #5264
Упрощенные цепные сравнения и незначительные исправления кода. #5276
RemoteUserAuthentication, документация и тесты. #5306
Вернуть «Кэширование корня поля и свойства контекста» #5313.
Исправьте интроспекцию поля списка в схеме. #5326
Исправление интерактивной документации для нескольких вложенных и дополнительных методов. #5334
Исправление/удаление неопределенного шаблона var «schema» #5346
3.6.3¶
Дата : 12th May 2017
Вызывает 404, если поиск URL приводит к ValidationError. (** :doc:`#5126 <https://github.com/encode/django-rest-framework/issues/5126>`** )
Учет имен http_method_names в представлениях, основанных на классах, при генерации схем API. (** :doc:`#5085 <https://github.com/encode/django-rest-framework/issues/5085>`** )
Разрешить переопределение
get_limit
в LimitOffsetPagination для возврата всех записей. (** :doc:`#4437 <https://github.com/encode/django-rest-framework/issues/4437>`** )Исправьте частичное обновление для ListSerializer. (** :doc:`#4222 <https://github.com/encode/django-rest-framework/issues/4222>`** )
Правильное отображение элемента управления JSONField в просматриваемом API. (** :doc:`#4999 <https://github.com/encode/django-rest-framework/issues/4999>`** , :doc:`#5042 <https://github.com/encode/django-rest-framework/issues/5042>`** )
Вызывает ошибки валидации для недопустимого времени суток в заданном часовом поясе. (** :doc:`#4987 <https://github.com/encode/django-rest-framework/issues/4987>`** )
Поддержка ограничения ярлыков документов и схем на подмножество ссылок. (** :doc:`#4979 <https://github.com/encode/django-rest-framework/issues/4979>`** )
Решить ошибку SchemaGenerator с пагинаторами, у которых нет атрибута
page_size
. (** :doc:`#5086 <https://github.com/encode/django-rest-framework/issues/5086>`** , :doc:`#3692 <https://github.com/encode/django-rest-framework/issues/3692>`** )Разрешите исключение HyperlinkedRelatedField для строки с %20 вместо пробела. (** :doc:`#4748 <https://github.com/encode/django-rest-framework/issues/4748>`** , :doc:`#5078 <https://github.com/encode/django-rest-framework/issues/5078>`** )
Настраиваемые классы генератора схем. (** :doc:`#5082 <https://github.com/encode/django-rest-framework/issues/5082>`** )
Обновляйте существующие заголовки vary в ответе вместо того, чтобы перезаписывать их. (** :doc:`#5047 <https://github.com/encode/django-rest-framework/issues/5047>`** )
Поддержка передачи
.as_view()
в экземпляр представления. (** :doc:`#5053 <https://github.com/encode/django-rest-framework/issues/5053>`** )Используйте правильный обработчик исключений при переопределении настроек в представлении. (** :doc:`#5055 <https://github.com/encode/django-rest-framework/issues/5055>`** , :doc:`#5054 <https://github.com/encode/django-rest-framework/issues/5054>`** )
Обновите булево поле для поддержки значений «да» и «нет». (** :doc:`#5038 <https://github.com/encode/django-rest-framework/issues/5038>`** )
Исправьте уникальный валидатор для ChoiceField. (** :doc:`#5004 <https://github.com/encode/django-rest-framework/issues/5004>`** , :doc:`#5026 <https://github.com/encode/django-rest-framework/issues/5026>`** , :doc:`#5028 <https://github.com/encode/django-rest-framework/issues/5028>`** )
Очистка JavaScript в API Docs. (** :doc:`#5001 <https://github.com/encode/django-rest-framework/issues/5001>`** )
Включите регексы путей URL в схемы API, если они действительны. (** :doc:`#5014 <https://github.com/encode/django-rest-framework/issues/5014>`** )
Правильно заданная схема в coreapi TokenAuthentication. (** :doc:`#5000 <https://github.com/encode/django-rest-framework/issues/5000>`** , :doc:`#4994 <https://github.com/encode/django-rest-framework/issues/4994>`** )
HEAD запросы на ViewSets не должны возвращать 405. (** :doc:`#4705 <https://github.com/encode/django-rest-framework/issues/4705>`** , :doc:`#4973 <https://github.com/encode/django-rest-framework/issues/4973>`** , :doc:`#4864 <https://github.com/encode/django-rest-framework/issues/4864>`** )
Поддержка использования „source“ в
extra_kwargs
. (** :doc:`#4688 <https://github.com/encode/django-rest-framework/issues/4688>`** )Исправьте неверный тип содержимого для schema.js (** :doc:`#4968 <https://github.com/encode/django-rest-framework/issues/4968>`** )
Исправьте проблемы наследования DjangoFilterBackend. (** :doc:`#5089 <https://github.com/encode/django-rest-framework/issues/5089>`** , :doc:`#5117 <https://github.com/encode/django-rest-framework/issues/5117>`** )
3.6.2¶
Дата : 10th March 2017
Поддержка Safari и IE в документации API. (** :doc:`#4959 <https://github.com/encode/django-rest-framework/issues/4959>`** , :doc:`#4961 <https://github.com/encode/django-rest-framework/issues/4961>`** )
Добавьте недостающие
mark_safe
в тегах шаблона API docs. (** :doc:`#4952 <https://github.com/encode/django-rest-framework/issues/4952>`** , :doc:`#4953 <https://github.com/encode/django-rest-framework/issues/4953>`** )Добавьте недостающие глифические шрифты. (** :doc:`#4950 <https://github.com/encode/django-rest-framework/issues/4950>`** , :doc:`#4951 <https://github.com/encode/django-rest-framework/issues/4951>`** )
Исправьте поля «один к одному» в документации API. (** :doc:`#4955 <https://github.com/encode/django-rest-framework/issues/4955>`** , :doc:`#4956 <https://github.com/encode/django-rest-framework/issues/4956>`** )
Чистка тестов. (** :doc:`#4949 <https://github.com/encode/django-rest-framework/issues/4949>`** )
3.6.1¶
Дата : 9th March 2017
Убедитесь, что зависимость
markdown
является необязательной. (** :doc:`#4947 <https://github.com/encode/django-rest-framework/issues/4947>`** )
Серия 3.5.x¶
3.5.4¶
Дата : 10th February 2017
Добавьте аргументы max_length и min_length для ListField. (** :doc:`#4877 <https://github.com/encode/django-rest-framework/issues/4877>`** )
Добавьте поддержку пользовательских обработчиков исключений для каждого вида. (** :doc:`#4753 <https://github.com/encode/django-rest-framework/issues/4753>`** )
Поддержка отключения объявленных полей в подклассах сериализатора. (** :doc:`#4764 <https://github.com/encode/django-rest-framework/issues/4764>`** )
Поддержка пользовательских имен представлений на конечных точках
@list_route
и@detail_route
. (** :doc:`#4821 <https://github.com/encode/django-rest-framework/issues/4821>`** )Корректные метки для полей в шаблоне входа в систему при использовании пользовательской модели пользователя. (** :doc:`#4841 <https://github.com/encode/django-rest-framework/issues/4841>`** )
Исправление пробелов в описаниях, сгенерированных из документальных строк. (** :doc:`#4759 <https://github.com/encode/django-rest-framework/issues/4759>`** , :doc:`#4869 <https://github.com/encode/django-rest-framework/issues/4869>`** , :doc:`#4870 <https://github.com/encode/django-rest-framework/issues/4870>`** )
Улучшен отчет об ошибках, когда схемы возвращаются представлениями без визуализатора схем. (** :doc:`#4790 <https://github.com/encode/django-rest-framework/issues/4790>`** )
Исправление возврата ответа на запросы
PUT
при использованииprefetch_related
. (** :doc:`#4661 <https://github.com/encode/django-rest-framework/issues/4661>`** , :doc:`#4668 <https://github.com/encode/django-rest-framework/issues/4668>`** )Исправление названий видов хлебных крошек. (** :doc:`#4750 <https://github.com/encode/django-rest-framework/issues/4750>`** )
Исправление для RequestsClient, обеспечивающее полное соответствие URL. (** :doc:`#4678 <https://github.com/encode/django-rest-framework/issues/4678>`** )
Исправление некорректного поведения проверки записываемых-вложенных полей в некоторых случаях. (** :doc:`#4634 <https://github.com/encode/django-rest-framework/issues/4634>`** , :doc:`#4669 <https://github.com/encode/django-rest-framework/issues/4669>`** )
Устранение предупреждений об износе Django. (** :doc:`#4712 <https://github.com/encode/django-rest-framework/issues/4712>`** )
Различная очистка тестовых примеров.
3.5.3¶
Дата : 7th November 2016
Не выдавать некорректные предупреждения об устаревании FilterSet. (** :doc:`#4660 <https://github.com/encode/django-rest-framework/issues/4660>`** , :doc:`#4643 <https://github.com/encode/django-rest-framework/issues/4643>`** , :doc:`#4644 <https://github.com/encode/django-rest-framework/issues/4644>`** )
Генерация схемы не должна вызывать 404, когда это делает класс разрешения представления. (** :doc:`#4645 <https://github.com/encode/django-rest-framework/issues/4645>`** , :doc:`#4646 <https://github.com/encode/django-rest-framework/issues/4646>`** )
Добавьте поддержку
autofocus
для элементов управления вводом. (** :doc:`#4650 <https://github.com/encode/django-rest-framework/issues/4650>`** )
3.5.2¶
Дата : 1st November 2016
Восстановление трассировки исключений в Python 2.7. (** :doc:`#4631 <https://github.com/encode/django-rest-framework/issues/4631>`** , :doc:`#4638 <https://github.com/encode/django-rest-framework/issues/4638>`** )
Правильное отображение матриц в консоли администратора. (** :doc:`#4532 <https://github.com/encode/django-rest-framework/issues/4532>`** , :doc:`#4636 <https://github.com/encode/django-rest-framework/issues/4636>`** )
Исправьте is_simple_callable с переменными args, kwargs. (** :doc:`#4622 <https://github.com/encode/django-rest-framework/issues/4622>`** , :doc:`#4602 <https://github.com/encode/django-rest-framework/issues/4602>`** )
Поддержка литералов „on“/“off“ с BooleanField. (** :doc:`#4640 <https://github.com/encode/django-rest-framework/issues/4640>`** , :doc:`#4624 <https://github.com/encode/django-rest-framework/issues/4624>`** )
Включить пагинацию курсора в кверисетах значений. (** :doc:`#4569 <https://github.com/encode/django-rest-framework/issues/4569>`** )
Исправлена поддержка функции get_full_details() для исключений Throttled. (** :doc:`#4627 <https://github.com/encode/django-rest-framework/issues/4627>`** )
Исправьте прокси FilterSet. (** :doc:`#4620 <https://github.com/encode/django-rest-framework/issues/4620>`** )
Сделайте импорт полей сериализатора явным. (** :doc:`#4628 <https://github.com/encode/django-rest-framework/issues/4628>`** )
Отбросьте избыточные запросы адаптера. (** :doc:`#4639 <https://github.com/encode/django-rest-framework/issues/4639>`** )
3.5.1¶
Дата : 21st October 2016
Сделайте
rest_framework/compat.py
импорт. (** :doc:`#4612 <https://github.com/encode/django-rest-framework/issues/4612>`** , :doc:`#4608 <https://github.com/encode/django-rest-framework/issues/4608>`** , :doc:`#4601 <https://github.com/encode/django-rest-framework/issues/4601>`** )Исправьте ошибку в генерации пути к базе схемы. (** :doc:`#4611 <https://github.com/encode/django-rest-framework/issues/4611>`** , :doc:`#4605 <https://github.com/encode/django-rest-framework/issues/4605>`** )
Исправьте неработающий случай ListSerializer с одним элементом. (** :doc:`#4609 <https://github.com/encode/django-rest-framework/issues/4609>`** , :doc:`#4606 <https://github.com/encode/django-rest-framework/issues/4606>`** )
Уберите голый
raise
для совместимости с Python 3.5. (** :doc:`#4600 <https://github.com/encode/django-rest-framework/issues/4600>`** )
3.5.0¶
Дата : 20th October 2016
Серия 3.4.x¶
3.4.7¶
Дата : 21st September 2016
Обратное поведение для разбора запроса, когда request.POST уже доступен. (** :doc:`#3951 <https://github.com/encode/django-rest-framework/issues/3951>`** , :doc:`#4500 <https://github.com/encode/django-rest-framework/issues/4500>`** )
Исправьте регрессию
RegexField
. (** :doc:`#4489 <https://github.com/encode/django-rest-framework/issues/4489>`** , :doc:`#4490 <https://github.com/encode/django-rest-framework/issues/4490>`** , :doc:`#2617 <https://github.com/encode/django-rest-framework/issues/2617>`** )Отсутствие запятой в
admin.html
вызывает ошибку CSRF. (** :doc:`#4472 <https://github.com/encode/django-rest-framework/issues/4472>`** , :doc:`#4473 <https://github.com/encode/django-rest-framework/issues/4473>`** )Исправьте отрисовку ответа с пустым контекстом. (** :doc:`#4495 <https://github.com/encode/django-rest-framework/issues/4495>`** )
Исправьте регрессию отступов в листинге API. (** :doc:`#4493 <https://github.com/encode/django-rest-framework/issues/4493>`** )
Исправлена проблема, когда неверное значение устанавливалось в
ResolverMatch.func_name
декорированного представления api_view. (** :doc:`#4465 <https://github.com/encode/django-rest-framework/issues/4465>`** , :doc:`#4462 <https://github.com/encode/django-rest-framework/issues/4462>`** )Исправьте
APIClient.get()
, когда путь содержит юникодовые аргументы (** :doc:`#4458 <https://github.com/encode/django-rest-framework/issues/4458>`** )
3.4.6¶
Дата : 23rd August 2016
Исправьте неправильный Javascript в API для просмотра. (** :doc:`#4435 <https://github.com/encode/django-rest-framework/issues/4435>`** )
Пропустите HiddenField из полей схемы. (** :doc:`#4425 <https://github.com/encode/django-rest-framework/issues/4425>`** , :doc:`#4429 <https://github.com/encode/django-rest-framework/issues/4429>`** )
Улучшите Create, чтобы показать исходный трассировочный откат исключения. (** :doc:`#3508 <https://github.com/encode/django-rest-framework/issues/3508>`** )
Исправьте
AdminRenderer
отображение полей, связанных только с PK. (** :doc:`#4419 <https://github.com/encode/django-rest-framework/issues/4419>`** , :doc:`#4423 <https://github.com/encode/django-rest-framework/issues/4423>`** )
3.4.5¶
Дата : 19th August 2016
Улучшите обработку ошибок отладки. ([#4416][gh4416], [#4409][gh4409])
Разрешить пользовательскую настройку CSRF_HEADER_NAME. ([#4415][gh4415], [#4410][gh4410])
Включите атрибут .action для наборов представлений при генерации схем. ([#4408][gh4408], [#4398][gh4398])
Не включайте элементы request.FILES в request.POST. ([#4407][gh4407])
Исправьте отрисовку множественных чекбоксов. ([#4403][gh4403])
Исправьте docstring для Field.get_default. ([#4404][gh4404])
Замените символ utf8 на его аналог ascii в README. ([#4412][gh4412])
3.4.4¶
Дата : 12th August 2016
Убедитесь, что представления полностью инициализированы при генерации схем. (** :doc:`#4373 <https://github.com/encode/django-rest-framework/issues/4373>`** , :doc:`#4382 <https://github.com/encode/django-rest-framework/issues/4382>`** , :doc:`#4383 <https://github.com/encode/django-rest-framework/issues/4383>`** , :doc:`#4279 <https://github.com/encode/django-rest-framework/issues/4279>`** , :doc:`#4278 <https://github.com/encode/django-rest-framework/issues/4278>`** )
Добавьте описания полей формы в схемы. (** :doc:`#4387 <https://github.com/encode/django-rest-framework/issues/4387>`** )
Исправьте генерацию категорий для конечных точек схемы. (** :doc:`#4391 <https://github.com/encode/django-rest-framework/issues/4391>`** , :doc:`#4394 <https://github.com/encode/django-rest-framework/issues/4394>`** , :doc:`#4390 <https://github.com/encode/django-rest-framework/issues/4390>`** , :doc:`#4386 <https://github.com/encode/django-rest-framework/issues/4386>`** , :doc:`#4376 <https://github.com/encode/django-rest-framework/issues/4376>`** , :doc:`#4329 <https://github.com/encode/django-rest-framework/issues/4329>`** )
Не удалять пустые параметры запроса при пагинации. (** :doc:`#4392 <https://github.com/encode/django-rest-framework/issues/4392>`** , :doc:`#4393 <https://github.com/encode/django-rest-framework/issues/4393>`** , :doc:`#4260 <https://github.com/encode/django-rest-framework/issues/4260>`** )
Не выполняйте повторно запрос для пустых результатов с LimitOffsetPagination. (** :doc:`#4201 <https://github.com/encode/django-rest-framework/issues/4201>`** , :doc:`#4388 <https://github.com/encode/django-rest-framework/issues/4388>`** )
Более строгая проверка типов для поля CharField. (** :doc:`#4380 <https://github.com/encode/django-rest-framework/issues/4380>`** , :doc:`#3394 <https://github.com/encode/django-rest-framework/issues/3394>`** )
RelatedField.choices должен сохранять нестроковые значения. (** :doc:`#4111 <https://github.com/encode/django-rest-framework/issues/4111>`** , :doc:`#4379 <https://github.com/encode/django-rest-framework/issues/4379>`** , :doc:`#3365 <https://github.com/encode/django-rest-framework/issues/3365>`** )
Тестовый пример для отображения флажков в вертикальном стиле формы. (** :doc:`#4378 <https://github.com/encode/django-rest-framework/issues/4378>`** , :doc:`#3868 <https://github.com/encode/django-rest-framework/issues/3868>`** , :doc:`#3868 <https://github.com/encode/django-rest-framework/issues/3868>`** )
Показать отслеживание ошибок HTML в просматриваемом API (** :doc:`#4042 <https://github.com/encode/django-rest-framework/issues/4042>`** , :doc:`#4172 <https://github.com/encode/django-rest-framework/issues/4172>`** )
Исправьте обработку ALLOWED_VERSIONS и отсутствие DEFAULT_VERSION. #4370
Разрешить
max_digits=None
на DecimalField. (** :doc:`#4377 <https://github.com/encode/django-rest-framework/issues/4377>`** , :doc:`#4372 <https://github.com/encode/django-rest-framework/issues/4372>`** )Ограничьте набор запросов при отображении реляционного выбора. (** :doc:`#4375 <https://github.com/encode/django-rest-framework/issues/4375>`** , :doc:`#4122 <https://github.com/encode/django-rest-framework/issues/4122>`** , :doc:`#3329 <https://github.com/encode/django-rest-framework/issues/3329>`** , :doc:`#3330 <https://github.com/encode/django-rest-framework/issues/3330>`** , :doc:`#3877 <https://github.com/encode/django-rest-framework/issues/3877>`** )
Решить отображение формы с ChoiceField, MultipleChoiceField и нестроковыми вариантами выбора. (** :doc:`#4374 <https://github.com/encode/django-rest-framework/issues/4374>`** , :doc:`#4119 <https://github.com/encode/django-rest-framework/issues/4119>`** , :doc:`#4121 <https://github.com/encode/django-rest-framework/issues/4121>`** , :doc:`#4137 <https://github.com/encode/django-rest-framework/issues/4137>`** , :doc:`#4120 <https://github.com/encode/django-rest-framework/issues/4120>`** )
Исправьте вызов метода обратного восстановления TemplateHTMLRenderer.resolve_context(). (** :doc:`#4371 <https://github.com/encode/django-rest-framework/issues/4371>`** )
3.4.3¶
Дата : 5th August 2016
Включите fallback для пользователей старого внутреннего API TemplateHTMLRenderer. ([#4361][gh4361])
3.4.2¶
Дата : 5th August 2016
Включите kwargs, переданные в „as_view“ при генерации схем. ([#4359][gh4359], [#4330][gh4330], [#4331][gh4331])
Доступ к
request.user.is_authenticated
как к свойству, а не методу, под Django 1.10+ ([#4358][gh4358], [#4354][gh4354])Отфильтруйте HEAD из схем. ([#4357][gh4357])
extra_kwargs имеет приоритет над kwargs уникальности. ([#4198][gh4198], [#4199][gh4199], [#4349][gh4349])
Исправление описаний при использовании табуляции в отступах кода. ([#4345][gh4345], [#4347][gh4347])*
Изменение генерации контекста шаблона в TemplateHTMLRenderer. ([#4236][gh4236])
Параметры сериализатора по умолчанию не должны включаться в частичные обновления. ([#4346][gh4346], [#3565][gh3565])
Последовательное поведение и описательная ошибка FileUploadParser, когда имя файла не включено. ([#4340][gh4340], [#3610][gh3610], [#4292][gh4292], [#4296][gh4296])
DecimalField квантует входящие цифры. ([#4339][gh4339], [#4318][gh4318])
Обработка нестрокового ввода для полей IP. ([#4335][gh4335], [#4336][gh4336], [#4338][gh4338])
Исправьте обработку ведущей косой черты, когда генерация схемы включает корневой URL. ([#4332][gh4332])
Тестовые примеры для DictField с опциями allow_null. ([#4348][gh4348])
Обновление тестов с Django 1.10 beta до Django 1.10. ([#4344][gh4344])
3.4.1¶
Дата : 28th July 2016
Добавлен аргумент
root_renderers
кDefaultRouter
. ([#4323][gh4323], [#4268][gh4268])Добавлены аргументы
url
иschema_url
. ([#4321][gh4321], [#4308][gh4308], [#4305][gh4305])Проверка уникальности вместе должна применяться к полям, доступным только для чтения и имеющим значение по умолчанию. ([#4316][gh4316], [#4294][gh4294])
Установите view.format_kwarg в генераторе схем. ([#4293][gh4293], [#4315][gh4315])
Исправьте генератор схем для представлений с
pagination_class = None
. ([#4314][gh4314], [#4289][gh4289])Исправьте генератор схем для представлений без
get_serializer_class
. ([#4265][gh4265], [#4285][gh4285])Исправления для параметров медиатипа в заголовках
Accept
иContent-Type
. ([#4287][gh4287], [#4313][gh4313], [#4281][gh4281])Используйте verbose_name вместо object_name в сообщениях об ошибках. ([#4299][gh4299])
Незначительное обновление версии Twitter Bootstrap. ([#4307][gh4307])
SearchFilter выдает ошибку при использовании со связанным полем. ([#4302][gh4302], [#4303][gh4303], [#4298][gh4298])
Добавление поддержки кодов состояния RFC 4918. ([#4291][gh4291])
Добавьте LICENSE.md в собранное колесо. ([#4270][gh4270])
Сериализация «сложного» поля возвращает None вместо значения с версии 3.4 ([#4272][gh4272], [#4273][gh4273], [#4288][gh4288])
3.4.0¶
Дата : 14th July 2016
Не обрезайте микросекунды в выводе JSON. ([#4256][gh4256])
Две немного разные сериализации времени даты по стандарту iso 8601. ([#4255][gh4255])
Устранение некорректного включения параметров типа носителя. ([#4254][gh4254])
Ответ Content-Type потенциально неверно сформирован. ([#4253][gh4253])
Исправьте ошибку setup.py на некоторых платформах. ([#4246][gh4246])
Перенесите альтернативные форматы в coreapi в отдельные пакеты. ([#4244][gh4244])
Добавьте аргумент с ключевым словом localize в
DecimalField
. ([#4233][gh4233])Исправление проблем с маршрутизаторами для пользовательских list-route и detail-routes. ([#4229][gh4229])
Версионность пространства имен с вложенными пространствами имен. ([#4219][gh4219])
Надежная проверка на уникальность. ([#4217][gh4217])
Небольшой рефакторинг
must_call_distinct
. ([#4215][gh4215])Переопределяемое отсечение смещения в CursorPagination. ([#4212][gh4212])
Передавайте строки в виде строки с полями даты/времени. ([#4196][gh4196])
Добавьте тест, подтверждающий, что required=False является действительным для реляционного поля. ([#4195][gh4195])
В LimitOffsetPagination
limit=0
следует вернуться к пределу по умолчанию. ([#4194][gh4194])Исключите поля read_only=True из валидации unique_together и добавьте документацию. ([#4192][gh4192])
Работа с байтовыми строками в JSON. ([#4191][gh4191])
JSONField(binary=True) представляет использование двоичных строк, которые JSONRenderer не поддерживает. ([#4187][gh4187])
JSONField(binary=True) представляет использование двоичных строк, которые JSONRenderer не поддерживает. ([#4185][gh4185])
Более надежный рендеринг форм в API для просмотра. ([#4181][gh4181])
Пустые случаи
.validated_data
и.errors
как списки, а не dicts для ListSerializer. ([#4180][gh4180])Схемы и клиентские библиотеки. ([#4179][gh4179])
Удалено свойство
AUTH_USER_MODEL
compat. ([#4176][gh4176])Уберите существующие предупреждения об износе. ([#4166][gh4166])
Поддержка Django 1.10. ([#4158][gh4158])
Обновлена версия jQuery до 1.12.4. ([#4157][gh4157])
Более надежное поведение по умолчанию для OrderingFilter. ([#4156][gh4156])
удаление кодов и тестов description.py. ([#4153][gh4153])
Заверните guardian.VERSION в кортеж. ([#4149][gh4149])
Уточните валидатор для полей с <source=> kwargs. ([#4146][gh4146])
Исправьте представление значений None в дочерних элементах ListField, DictField. ([#4118][gh4118])
Решите представление TimeField для значения midnight. ([#4107][gh4107])
Установите правильный код статуса в AdminRenderer для перенаправления после POST/DELETE запросов. ([#4106][gh4106])
Рендеринг TimeField возвращает None вместо 00:00:00. ([#4105][gh4105])
Исправьте неверно названный путь к локали zh-hans и zh-hant. ([#4103][gh4103])
Предотвращение возникновения исключения, когда предел равен 0. ([#4098][gh4098])
TokenAuthentication: Разрешить пользовательское ключевое слово в заголовке. ([#4097][gh4097])
Обработка некорректно заполненного заголовка HTTP basic auth. ([#4090][gh4090])
При пагинации LimitOffset происходит сбой Browseable API, когда limit=0. ([#4079][gh4079])
Исправлена поддержка произвольной точности DecimalField. ([#4075][gh4075])
Добавлена поддержка пользовательских имен CSRF-куки. ([#4049][gh4049])
Исправьте регрессию, вызванную #4035. ([#4041][gh4041])
Ни одно представление auth, не имеющее разрешения, не должно поднимать 403. ([#4040][gh4040])
Исправьте путаницу между string_types и text_types. ([#4025][gh4025])
Не перечислять варианты связанных полей в запросах OPTIONS. ([#4021][gh4021])
Исправьте опечатку. ([#4008][gh4008])
Переназначьте инициализацию представления. ([#4006][gh4006])
Ошибка типа в DjangoObjectPermissionsFilter на Python 3.4. ([#4005][gh4005])
Исправлено использование устаревшего Query.aggregates. ([#4003][gh4003])
Исправьте пустые строки в документах. ([#4002][gh4002])
Исправлена пагинация администратора, когда лимит равен 0. ([#3990][gh3990])
Корректировка OrderingFilter. ([#3983][gh3983])
Необязательные поля, связанные с сериализатором. ([#3976][gh3976])
Использование более безопасного способа вызова «@api_view» в учебнике. ([#3971][gh3971])
ListSerializer не обрабатывает ограничения unique_together. ([#3970][gh3970])
Добавьте недостающий файл миграции. ([#3968][gh3968])
OrderingFilter
должен вызыватьget_serializer_class()
для определения полей по умолчанию. ([#3964][gh3964])Удалите старые проверки Django из тестов и compat. ([#3953][gh3953])
Поддержите callable как значение
initial
для любогоserializer.Field
. ([#3943][gh3943])Предотвращен ненужный вызов distinct() в SearchFilter. ([#3938][gh3938])
Исправьте сериализацию None UUID ForeignKey. ([#3936][gh3936])
Увольнение Django 1.7. ([#3933][gh3933])
Добавьте недостающий пробел в сообщении об ошибке сериализатора. ([#3926][gh3926])
Исправлена опечатка в _force_text_recursive. ([#3908][gh3908])
Попытка устранить предупреждения Django 2.0 deprecate, связанные с
field.rel
. ([#3906][gh3906])Исправьте разбор многокомпонентных данных с помощью вложенного сериализатора со списком. ([#3820][gh3820])
Разрешение URL API в разных пространствах имен. ([#3816][gh3816])
Не используйте HTML-эскейп
help_text
в формах Browsable API. ([#3812][gh3812])OPTIONS находит и показывает все возможные внешние ключи в поле choices. ([#3751][gh3751])
Предупреждения об износе Django 1.9 ([#3729][gh3729])
Тестовый пример для #3598 ([#3710][gh3710])
Добавление поддержки нескольких значений для фильтра поиска. ([#3541][gh3541])
Используйте get_serializer_class в фильтре упорядочивания. ([#3487][gh3487])
Сериализаторы с many=True должны возвращать пустой список, а не пустой dict. ([#3476][gh3476])
LimitOffsetPagination limit=0 исправление. ([#3444][gh3444])
Разрешите валидаторам откладывать оценку строк и обрабатывать новый формат строк. ([#3438][gh3438])
Уникальный валидатор выполняется и ломается, если поле недействительно. ([#3381][gh3381])
Не игнорируйте переопределенный View.get_view_name() в хлебных крошках. ([#3273][gh3273])
Повторная отрисовка формы при неудачном рендеринге с помощью сериализатора. ([#3164][gh3164])
Ограничение уникальности не позволяет обновлять вложенные сериализаторы. ([#2996][gh2996])
Валидаторы уникальности не должны запускаться для исключенных (read_only) полей. ([#2848][gh2848])
UniqueValidator вызывает исключение для вложенных объектов. ([#2403][gh2403])
lookup_type
устарело в пользуlookup_expr
. ([#4259][gh4259])
Серия 3.3.x¶
3.3.3¶
Дата : 14th March 2016.
Удалите строку версии из шаблонов. Спасибо @blag за отчет и исправления. ([#3878][gh3878], [#3913][gh3913], [#3912][gh3912])
Исправлена вертикальная html-верстка для
BooleanField
. Спасибо Михаилу Радчуку за исправление. ([#3910][gh3910])Уменьшены предупреждения об износе в Django 1.8. Спасибо Саймону Шаретту за исправление. ([#3903][gh3903])
Интернационализация для authtoken. Спасибо Михаилу Начарову за исправление. ([#3887][gh3887], [#3968][gh3968])
Исправьте модель
Token
какabstract
, когда приложение authtoken не объявлено. Спасибо Адаму Томасу за сообщение. ([#3860][gh3860], [#3858][gh3858])Улучшение совместимости версий Markdown. Спасибо Майклу Шульцу (Michael J. Schultz) за исправление. ([#3604][gh3604], [#3842][gh3842])
QueryParameterVersioning
не использует настройкуDEFAULT_VERSION
. Спасибо Брэду Монтгомери за исправление. ([#3833][gh3833])Добавьте явное
on_delete
на моделях. Спасибо Мадсу Йенсену за исправление. ([#3832][gh3832])Исправьте
DateField.to_representation
для работы с юникодом Python 2. Спасибо Михаилу Радчуку за исправление. ([#3819][gh3819])Исправлено
TimeField
, не обрабатывающее времена строк. Спасибо Арески Белаиду за исправление. ([#3809][gh3809])Избегайте обновлений
Meta.extra_kwargs
. Спасибо Кевину Мэсси за сообщение и исправление. ([#3805][gh3805], [#3804][gh3804])Исправление некорректного отображения вложенной ошибки валидации. Спасибо Крейгу де Стигтеру за исправление. ([#3801][gh3801])
Документ о том, как избежать проблем с CSRF и отсутствующей кнопкой
django-crispy-forms
. Спасибо Emmanuelle Delescolle, José Padilla и Luis San Pablo за отчет, анализ и исправление. ([#3787][gh3787], [#3636][gh3636], [#3637][gh3637])Улучшение времени установки файла Rest Framework Settings. Спасибо Miles Hutson за отчет и Mads Jensen за исправление. ([#3786][gh3786], [#3815][gh3815])
Улучшение совместимости authtoken с Django 1.9. Спасибо S. Andrew Sheppard за исправление. ([#3785][gh3785])
Исправьте передачу
Min/MaxValueValidator
изDecimalField
модели. Спасибо Кевину Брауну за исправление. ([#3774][gh3774])Улучшение HTML-заголовка в Browsable API. Спасибо Майку Лисснеру за отчет и исправление. ([#3769][gh3769])
Исправьте
AutoFilterSet
для наследования отdefault_filter_set
. Спасибо Тому Линфорду за исправление. ([#3753][gh3753])Исправьте конфигурацию transifex для работы с новыми кодами китайского языка. Спасибо @nypisces за отчет и исправление. ([#3739][gh3739])
DateTimeField
некорректно обрабатывает пустые значения. Спасибо Мику Паркеру за сообщение и исправление. ([#3731][gh3731], [#3726][gh3728])Возникновение ошибки при установке удаленного параметра rest_framework. Спасибо Луису Сан-Пабло за исправление. ([#3715][gh3715])
Добавьте отсутствующий csrf_token в пост-форме AdminRenderer. Спасибо Piotr Śniegowski за исправление. ([#3703][gh3703])
Переработано
_get_reverse_relationships()
для использования правильногоto_field
. Спасибо Бенджамину Филлипсу за исправление. ([#3696][gh3696])Документируйте использование
get_queryset
дляRelatedField
. Спасибо Райану Хиберту за исправление. ([#3605][gh3605])Исправьте определение пустого pk в HyperlinkRelatedField.get_url. Спасибо @jslang за исправление ([#3962][gh3962])
3.3.2¶
Дата : 14th December 2015.
ListField
заставляет входные данные быть списком. ([#3513][gh3513])Исправьте регрессию, скрывающую форму сырых данных. ([#3600][gh3600], [#3578][gh3578])
Исправьте совместимость с Python 3.5. ([#3534][gh3534], [#3626][gh3626])
Разрешить установку пользовательского Django Paginator в
pagination.PageNumberPagination
. ([#3631][gh3631], [#3684][gh3684])Исправьте реляционные поля без атрибута
to_fields
. ([#3635][gh3635], [#3634][gh3634])Исправьте предупреждения о депривации
template.render
для Django 1.9. ([#3654][gh3654])Сортировка заголовков ответа в просматриваемом рендере API. ([#3655][gh3655])
Используйте related_objects api для Django 1.9+. ([#3656][gh3656], [#3252][gh3252])
Добавьте модальное окно подтверждения при удалении. ([#3228][gh3228], [#3662][gh3662])
Выявление ранее скрытых ошибок AttributeErrors и TypeErrors при вызове has** [object* ]разрешений. ([#3668][gh3668])
Сделайте DRF совместимым с мультишаблонным движком в Django 1.8. ([#3672][gh3672])
Обновите
NestedBoundField
для обработки пустой строки при выводе ее формы. ([#3677][gh3677])Исправьте проверку UUID, чтобы правильно отлавливать недопустимые типы ввода. ([#3687][gh3687], [#3679][gh3679])
Исправьте проблемы с кэшированием. ([#3628][gh3628], [#3701][gh3701])
Исправьте браузер Admin и API для представлений без filter_class. ([#3705][gh3705], [#3596][gh3596], [#3597][gh3597])
Добавьте имя_приложения в rest_framework.urls. ([#3714][gh3714])
Улучшите представления authtoken для поддержки версионности url. ([#3718][gh3718], [#3723][gh3723])
3.3.1¶
Дата : 4th November 2015.
Устранение ошибки разбора при обращении к
request.POST
([#3592][gh3592])Правильное решение проблемы с
to_field
, относящейся к первичному ключу. ([#3593][gh3593])Разрешить отрисовку HTML фильтра, если не определено
filter_class
. ([#3560][gh3560])Исправьте проблемы с рендерингом админки. ([#3564][gh3564], [#3556][gh3556])
Исправьте проблему с DecimalValidator. ([#3568][gh3568])
3.3.0¶
Дата : 28th October 2015.
Элементы управления HTML для фильтров. ([#3315][gh3315])
Формы API. ([#3475][gh3475])
API с возможностью просмотра AJAX. ([#3410][gh3410])
Добавлено поле JSONField. ([#3454][gh3454])
Корректное отображение
to_field
при создании реляционных полейModelSerializer
. ([#3526][gh3526])Включите аргументы ключевых слов при отображении
FilePathField
на поле сериализатора. ([#3536][gh3536])Составьте карту соответствующей модели
error_messages
наModelSerializer
ограничения уникальности. ([#3435][gh3435])Включите ограничение
max_length
для полейModelSerializer
, отображаемых из TextField. ([#3509][gh3509])Добавлена поддержка Django 1.9. ([#3450][gh3450], [#3525][gh3525])
Удалена поддержка Django 1.5 и 1.6. ([#3421][gh3421], [#3429][gh3429])
Удалены «южные» миграции. ([#3495][gh3495])
Серия 3.2.x¶
3.2.5¶
Дата : 27th October 2015.
Эскейп
username
в необязательном теге выхода из системы. ([#3550][gh3550])
3.2.4¶
Дата : 21th September 2015.
Не допускайте ошибок при отсутствии атрибута
ViewSet.search_fields
. ([#3324][gh3324], [#3323][gh3323])Исправьте
allow_empty
, не работающий на сериализаторах сmany=True
. ([#3361][gh3361], [#3364][gh3364])Пусть
DurationField
принимает целые числа. ([#3359][gh3359])Многоуровневые словари не поддерживаются в многокомпонентных запросах. ([#3314][gh3314])
Исправьте усечение
ListField
при HTTP PATCH ([#3415][gh3415], [#2761][gh2761])
3.2.3¶
Дата : 24th August 2015.
Добавлены
html_cutoff
иhtml_cutoff_text
для ограничения выпадающих списков выбора. ([#3313][gh3313])Добавлен стиль regex для
SearchFilter
. ([#3316][gh3316])Устранение проблем с установкой пустых HTML-полей. ([#3318][gh3318]) ([#3321][gh3321])
Корректное отображение существующих значений „select multiple“ в просматриваемых формах API. ([#3290][gh3290])
Устранение дублирующегося сообщения о проверке для
IPAddressField
. ([#3249[gh3249]) ([#3250][gh3250])Исправление для обеспечения работы рендеринга администратора при отключенной пагинации. ([#3275][gh3275])
Решить ошибку с
LimitOffsetPagination
при count=0, offset=0. ([#3303][gh3303])
3.2.2¶
Дата : 13th August 2015.
Добавьте метод
display_value()
для использования при отображении входов выбора реляционного поля. ([#3254][gh3254])Исправление проблемы, когда флажки
BooleanField
некорректно отображались как отмеченные. ([#3258][gh3258])Убедитесь, что пустые флажки правильно устанавливают
BooleanField
вFalse
во всех случаях. ([#2776][gh2776])Разрешить свойство
WSGIRequest.FILES
без возникновения некорректной ошибки deprecated. ([#3261][gh3261])Решите проблему с отображением вложенных сериализаторов в формах. ([#3260][gh3260])
Вызывает ошибку, если пользователь случайно передает в ответ экземпляр сериализатора, а не данные. ([#3241][gh3241])
3.2.1¶
Дата : 7th August 2015.
Исправление отображения виджетов реляционного выбора без выбора. ([#3237][gh3237])
Исправление того, что
1
,0
отображались какtrue
,false
в интерфейсе администратора. [#3227][gh3227])Исправление для полей ListFields с одним значением в HTML-форме ввода. ([#3238][gh3238])
Разрешите
request.FILES
для совместимости с классомHTTPRequest
в Django. ([#3239][gh3239])
3.2.0¶
Дата : 6th August 2015.
Добавить
AdminRenderer
. ([#2926][gh2926])Добавить
FilePathField
. ([#1854][gh1854])Добавьте
allow_empty
кListField
. ([#2250][gh2250])Поддержка django-guardian 1.3. ([#3165][gh3165])
Поддержка сгруппированных вариантов. ([#3225][gh3225])
Поддержка форм ошибок в просматриваемом API. ([#3024][gh3024])
Разрешите классам прав настраивать сообщение об ошибке. ([#2539][gh2539])
Поддержка
source=<method>
в полях с гиперссылками. ([#2690][gh2690])ListField(allow_null=True)
теперь позволяет использовать null в качестве значения списка, а не нулевые элементы в списке. ([#2766][gh2766])ManyToMany()
отображается наallow_empty=False
,ManyToMany(blank=True)
отображается наallow_empty=True
. ([#2804][gh2804])Поддержка пользовательских стилей сериализации для полей первичного ключа. ([#2789][gh2789])
OPTIONS
запросы поддерживают вложенные представления. ([#2915][gh2915])Установите
view.action == "metadata"
для наборов просмотров сOPTIONS
запросами. ([#3115][gh3115])Поддержка
allow_blank
наUUIDField
. ([#3130][gh#3130])Не отображать докстринги представления с кодами ответа 401 или 403. ([#3216][gh3216])
Устранение предупреждений об устаревании Django 1.8. ([#2886][gh2886])
Исправление для валидации
DecimalField
. ([#3139][gh3139])Исправьте поведение
allow_blank=False
при использованииtrim_whitespace=True
. ([#2712][gh2712])Исправление проблемы, когда некоторые комбинации полей неправильно отображались на недопустимый аргумент
allow_blank
. ([#3011][gh3011])Исправление для выходных представлений с префетчами и модифицированными кверисетами. ([#2704][gh2704], [#2727][gh2727])
Исправьте ошибку утверждения, когда CursorPagination предоставляется с некоторыми недопустимыми параметрами запроса. (#2920)[gh2920].
Исправьте
UnicodeDecodeError
, когда недопустимые символы включены в заголовок сTokenAuthentication
. ([#2928][gh2928])Исправьте откат транзакций с помощью декоратора
@non_atomic_requests
. ([#3016][gh3016])Исправьте проблему дублирования результатов в базах данных Oracle, использующих
SearchFilter
. ([#2935][gh2935])Исправьте выравнивание и рендеринг чекбоксов в просматриваемых формах API. ([#2783][gh2783])
Исправление для несохраненных объектов файлов, которые должны использовать
"url": null
в представлении. ([#2759][gh2759])Исправьте рендеринг значений полей в API с возможностью просмотра. ([#2416][gh2416])
Исправьте
HStoreField
для включенияallow_blank=True
в отображениеDictField
. ([#2659][gh2659])Многочисленные другие исправления, улучшения в сообщениях об ошибках, приватном API и мелкие исправления.
Серия 3.1.x¶
3.1.3¶
Дата : 4th June 2015.
Добавить
DurationField
. ([#2481][gh2481], [#2989][gh2989])Добавьте аргумент
format
кUUIDField
. ([#2788][gh2788], [#3000][gh3000])MultipleChoiceField
некорректное опустошение при частичном обновлении с использованием multipart/form-data ([#2993][gh2993], [#2894][gh2894])Исправьте ошибку в опциях, связанных с read-only
RelatedField
. ([#2981][gh2981], [#2811][gh2811])Исправьте вложенные сериализаторы с отношениями
unique_together
. ([#2975][gh2975])Разрешить неожиданные значения для представлений
ChoiceField
/**MultipleChoiceField
. ([#2839][gh2839], [#2940][gh2940])Откат транзакции при ошибке, если установлено значение
ATOMIC_REQUESTS
. ([#2887][gh2887], [#2034][gh2034])Устанавливает действие над представлением при override_method независимо от его None-ness. ([#2933][gh2933])
DecimalField
принимает2E+2
как 200 и правильно проверяет десятичный знак. ([#2948][gh2948], [#2947][gh2947])Поддержка базовой аутентификации с пользовательскими
UserModel
, которые изменяютusername
. ([#2952][gh2952])IPAddressField
улучшения. ([#2747][gh2747], [#2618][gh2618], [#3008][gh3008])Улучшите
DecimalField
для упрощения подклассификации. ([#2695][gh2695])
3.1.2¶
Дата : 13rd May 2015.
DateField.to_representation
может обрабатывать str и пустые значения. ([#2656][gh2656], [#2687][gh2687], [#2869][gh2869])Используйте фразы причины по умолчанию из стандарта HTTP. ([#2764][gh2764], [#2763][gh2763])
Вызывать ошибку, когда
ModelSerializer
используется с абстрактной моделью. ([#2757][gh2757], [#2630][gh2630])Обработка обратного изменения неAPI view_name в
HyperLinkedRelatedField
([#2724][gh2724], [#2711][gh2711])Не требуйте пк строго для смежных областей. ([#2745][gh2745], [#2754][gh2754])
Метаданные обнаруживают нулевой тип поля boolean. ([#2762][gh2762])
Правильная обработка глубины во вложенных сериализаторах. ([#2798][gh2798])
Отображение набора представлений без пагинатора. ([#2807][gh2807])
Не проверяйте наличие устаревшего атрибута
.model
в разрешениях ([#2818][gh2818])Ограничьте целочисленное поле целыми числами и строками. ([#2835][gh2835], [#2836][gh2836])
Улучшите
IntegerField
для использования скомпилированного десятичного regex. ([#2853][gh2853])Запретите пустым
queryset
вызывать AssertionError. ([#2862][gh2862])DjangoModelPermissions
полагайтесь наget_queryset
. ([#2863][gh2863])Проверьте
AcceptHeaderVersioning
при наличии согласования содержимого. ([#2868][gh2868])Разрешите
DjangoObjectPermissions
использовать представления, определяющиеget_queryset
. ([#2905][gh2905])
3.1.1¶
Дата : 23rd March 2015.
Исправление безопасности: Escape tab переключения имени cookie в просматриваемом API.
Отображение форм ввода в просматриваемом API, если используется
serializer_class
, даже если методget_serializer
не существует в представлении. ([#2743][gh2743])Используйте ввод пароля для AuthTokenSerializer. ([#2741][gh2741])
Исправьте отсутствие закрывающего тега якоря после кнопки next. ([#2691][gh2691])
Исправьте обработку
lookup_url_kwarg
в наборах представлений. ([#2685][gh2685], [#2591][gh2591])Исправьте проблему с импортом
rest_framework.views
вapps.py
([#2678][gh2678])LimitOffsetPagination повышает
TypeError
если PAGE_SIZE не установлен ([#2667][gh2667], [#2700][gh2700])Немецкий перевод для сообщений об ошибке поля
min_value
ссылкиmax_value
. ([#2645][gh2645])Удалить
MergeDict
. ([#2640][gh2640])Поддержка сериализации несохраненных моделей со связанными полями. ([#2637][gh2637], [#2641][gh2641])
Разрешить пустые/нулевые значения для вариантов radio.html. ([#2631][gh2631])
3.1.0¶
Дата : 5th March 2015.
Более подробную информацию можно найти в разделе 3.1 release announcement.
Серия 3.0.x¶
3.0.5¶
Дата : 10th February 2015.
Исправьте ошибку, при которой
_closable_objects
нарушало пикировку. ([#1850][gh1850], [#2492][gh2492])Разрешить нестандартные модели
User
сThrottling
. ([#2524][gh2524])Поддержка пользовательского
User.db_table
в миграции TokenAuthentication. ([#2479][gh2479])Исправьте вводящие в заблуждение
AttributeError
трассировки наRequest
объектах. ([#2530][gh2530], [#2108][gh2108])ManyRelatedField.get_value
очистка поля при частичном обновлении. ([#2475][gh2475])Удален ярлык „.model“ из кода. ([#2486][gh2486])
Исправьте
detail_route
иlist_route
мутабельный аргумент. ([#2518][gh2518])Предварительная выборка объекта пользователя при получении токена в
TokenAuthentication
. ([#2519][gh2519])
3.0.4¶
Дата : 28th January 2015.
Поддержка Django 1.8a1. ([#2425][gh2425], [#2446][gh2446], [#2441][gh2441])
Добавьте
DictField
и поддержите Django 1.8HStoreField
. ([#2451][gh2451], [#2106][gh2106])Добавьте
UUIDField
и поддержите Django 1.8UUIDField
. ([#2448][gh2448], [#2433][gh2433], [#2432][gh2432])BaseRenderer.render
теперь повышаетNotImplementedError
. ([#2434][gh2434])Исправьте сериализацию timedelta JSON на Python 2.6. ([#2430][gh2430])
ResultDict
иResultList
теперь отображаются как стандартный диктант/список. ([#2421][gh2421])Исправьте видимый
HiddenField
в HTML-форме просматриваемой веб-страницы API. ([#2410][gh2410])Используйте
OrderedDict
дляRelatedField.choices
. ([#2408][gh2408])Исправьте формат идентификатора при использовании
HTTP_X_FORWARDED_FOR
. ([#2401][gh2401])Исправьте недействительный ключ в memcached при использовании дросселирования. ([#2400][gh2400])
Исправьте
FileUploadParser
с версией 3.x. ([#2399][gh2399])Исправьте наследование сериализатора. ([#2388][gh2388])
Исправьте проблемы с кэшированием
ReturnDict
. ([#2360][gh2360])
3.0.3¶
Дата : 8th January 2015.
Исправьте
MinValueValidator
наmodels.DateField
. ([#2369][gh2369])Исправление отсутствия контекста в сериализаторе при использовании пагинации. ([#2355][gh2355])
URL маршрутизаторов с именами теперь поддерживаются
DefaultRouter
. ([#2351][gh2351])required=False
позволяет не указывать значение для вывода. ([#2342][gh2342])Используйте ввод текстовой области для
models.TextField
. ([#2340][gh2340])При необходимости используйте пользовательские
ListSerializer
для пагинации. ([#2331][gh2331], [#2327][gh2327])Улучшено поведение с null и „“ для пустых HTML-полей. ([#2330][gh2330])
Убедитесь, что поля в
exclude
являются полями модели. ([#2319][gh2319])Исправьте несовместимость аргументов
IntegerField
иmax_length
. ([#2317][gh2317])Исправьте кодировщик YAML для сериализаторов 3.0. ([#2315][gh2315], [#2283][gh2283])
Исправьте поведение пустых HTML-полей. ([#2311][gh2311], [#1101][gh1101])
Исправьте глубину атрибута Metaclass, игнорирующую атрибут fields. ([#2287][gh2287])
Исправьте
format_suffix_patterns
для работы сi18n_patterns
от Django. ([#2278][gh2278])Возможность настраивать URL маршрутизатора для пользовательских действий, используя
url_path
. ([#2010][gh2010])Не устанавливайте Django REST Framework как яйцо. ([#2386][gh2386])
3.0.2¶
Дата : 17th December 2014.
Обеспечьте доступность
request.user
для промежуточного ПО ответа. ([#2155][gh2155])Client.logout()
также отменяет все существующиеforce_authenticate
. ([#2218][gh2218], [#2259][gh2259])Дополнительные утверждения и улучшенные проверки для предотвращения неправильного использования API сериализатора. ([#2228][gh2228], [#2234][gh2234], [#2262][gh2262], [#2263][gh2263], [#2266][gh2266], [#2267][gh2267], [#2289][gh2289], [#2291][gh2291])
Исправлено сообщение
min_length
дляCharField
. ([#2255][gh2255])Исправление
UnicodeDecodeError
, которое может возникнуть на сериализатореrepr
. ([#2270][gh2270], [#2279][gh2279])Исправьте пустые значения HTML, когда указано значение по умолчанию. ([#2280][gh2280], [#2294][gh2294])
Исправьте
SlugRelatedField
, повышающийUnicodeEncodeError
при использовании в качестве ввода множественного выбора. ([#2290][gh2290])
3.0.1¶
Дата : 11th December 2014.
Более полезное сообщение об ошибке, когда стандартный сериализатор
create()
не работает. ([#2013][gh2013])Вызывать ошибку при попытке сохранить сериализатор, если данные не действительны. ([#2098][gh2098])
Исправление ошибок
FileUploadParser
при пустых именах файлов и нескольких обработчиках загрузки. ([#2109][gh2109])Улучшите
BindingDict
для поддержки стандартных dict-функций. ([#2135][gh2135], [#2163][gh2163])Добавьте
validate()
кListSerializer
. ([#2168][gh2168], [#2225][gh2225], [#2232][gh2232])Исправьте ошибку рендеринга JSONP, когда некоторые символы не экранируются. ([#2169][gh2169], [#2195][gh2195])
Добавьте недостающий стиль по умолчанию для
FileField
. ([#2172][gh2172])Действия требуются при вызове
ViewSet.as_view()
. ([#2175][gh2175])Добавьте
allow_blank
кChoiceField
. ([#2184][gh2184], [#2239][gh2239])Косметические исправления в рендере HTML. ([#2187][gh2187])
Вызывать ошибку, если
fields
на сериализаторе не является списком строк. ([#2193][gh2193], [#2213][gh2213])Улучшение проверки вложенных созданий и обновлений. ([#2194][gh2194], [#2196][gh2196])
Аргумент
validated_attrs
переименован вvalidated_data
вSerializer
create()
/**update()
. ([#2197][gh2197])Удалите устаревший код, чтобы отразить отмененные версии Django. ([#2200][gh2200])
Улучшение ошибок сериализатора для вложенных записей. ([#2202][gh2202], [#2215][gh2215])
Исправьте несовместимость пагинации и пользовательских разрешений. ([#2205][gh2205])
Вызывать ошибку, если
fields
на сериализаторе не является списком строк. ([#2213][gh2213])Добавьте отсутствующие маркеры перевода для реляционных полей. ([#2231][gh2231])
Улучшите поведение поиска полей для dicts/mappings. ([#2244][gh2244], [#2243][gh2243])
Оптимизированная гиперссылка PK. ([#2242][gh2242])
3.0.0¶
Дата: 1 декабря 2014 г.
Более подробную информацию можно найти в разделе 3.0 release announcement.
Для более ранних выпусков please see the version 2.x documentation.
[gh2013]: https://github.com/encode/django-rest-framework/issues/2013 [gh2098]: https://github.com/encode/django-rest-framework/issues/2098 [gh2109]: https://github.com/encode/django-rest-framework/issues/2109 [gh2135]: https://github.com/encode/django-rest-framework/issues/2135 [gh2163]: https://github.com/encode/django-rest-framework/issues/2163 [gh2168]: https://github.com/encode/django-rest-framework/issues/2168 [gh2169]: https://github.com/encode/django-rest-framework/issues/2169 [gh2172]: https://github.com/encode/django-rest-framework/issues/2172 [gh2175]: https://github.com/encode/django-rest-framework/issues/2175 [gh2184]: https://github.com/encode/django-rest-framework/issues/2184 [gh2187]: https://github.com/encode/django-rest-framework/issues/2187 [gh2193]: https://github.com/encode/django-rest-framework/issues/2193 [gh2194]: https://github.com/encode/django-rest-framework/issues/2194 [gh2195]: https://github.com/encode/django-rest-framework/issues/2195 [gh2196]: https://github.com/encode/django-rest-framework/issues/2196 [gh2197]: https://github.com/encode/django-rest-framework/issues/2197 [gh2200]: https://github.com/encode/django-rest-framework/issues/2200 [gh2202]: https://github.com/encode/django-rest-framework/issues/2202 [gh2205]: https://github.com/encode/django-rest-framework/issues/2205 [gh2213]: https://github.com/encode/django-rest-framework/issues/2213 [gh2213]: https://github.com/encode/django-rest-framework/issues/2213 [gh2215]: https://github.com/encode/django-rest-framework/issues/2215 [gh2225]: https://github.com/encode/django-rest-framework/issues/2225 [gh2231]: https://github.com/encode/django-rest-framework/issues/2231 [gh2232]: https://github.com/encode/django-rest-framework/issues/2232 [gh2239]: https://github.com/encode/django-rest-framework/issues/2239 [gh2242]: https://github.com/encode/django-rest-framework/issues/2242 [gh2243]: https://github.com/encode/django-rest-framework/issues/2243 [gh2244]: https://github.com/encode/django-rest-framework/issues/2244 [gh2155]: https://github.com/encode/django-rest-framework/issues/2155 [gh2218]: https://github.com/encode/django-rest-framework/issues/2218 [gh2228]: https://github.com/encode/django-rest-framework/issues/2228 [gh2234]: https://github.com/encode/django-rest-framework/issues/2234 [gh2255]: https://github.com/encode/django-rest-framework/issues/2255 [gh2259]: https://github.com/encode/django-rest-framework/issues/2259 [gh2262]: https://github.com/encode/django-rest-framework/issues/2262 [gh2263]: https://github.com/encode/django-rest-framework/issues/2263 [gh2266]: https://github.com/encode/django-rest-framework/issues/2266 [gh2267]: https://github.com/encode/django-rest-framework/issues/2267 [gh2270]: https://github.com/encode/django-rest-framework/issues/2270 [gh2279]: https://github.com/encode/django-rest-framework/issues/2279 [gh2280]: https://github.com/encode/django-rest-framework/issues/2280 [gh2289]: https://github.com/encode/django-rest-framework/issues/2289 [gh2290]: https://github.com/encode/django-rest-framework/issues/2290 [gh2291]: https://github.com/encode/django-rest-framework/issues/2291 [gh2294]: https://github.com/encode/django-rest-framework/issues/2294 [gh1101]: https://github.com/encode/django-rest-framework/issues/1101 [gh2010]: https://github.com/encode/django-rest-framework/issues/2010 [gh2278]: https://github.com/encode/django-rest-framework/issues/2278 [gh2283]: https://github.com/encode/django-rest-framework/issues/2283 [gh2287]: https://github.com/encode/django-rest-framework/issues/2287 [gh2311]: https://github.com/encode/django-rest-framework/issues/2311 [gh2315]: https://github.com/encode/django-rest-framework/issues/2315 [gh2317]: https://github.com/encode/django-rest-framework/issues/2317 [gh2319]: https://github.com/encode/django-rest-framework/issues/2319 [gh2327]: https://github.com/encode/django-rest-framework/issues/2327 [gh2330]: https://github.com/encode/django-rest-framework/issues/2330 [gh2331]: https://github.com/encode/django-rest-framework/issues/2331 [gh2340]: https://github.com/encode/django-rest-framework/issues/2340 [gh2342]: https://github.com/encode/django-rest-framework/issues/2342 [gh2351]: https://github.com/encode/django-rest-framework/issues/2351 [gh2355]: https://github.com/encode/django-rest-framework/issues/2355 [gh2369]: https://github.com/encode/django-rest-framework/issues/2369 [gh2386]: https://github.com/encode/django-rest-framework/issues/2386 [gh2425]: https://github.com/encode/django-rest-framework/issues/2425 [gh2446]: https://github.com/encode/django-rest-framework/issues/2446 [gh2441]: https://github.com/encode/django-rest-framework/issues/2441 [gh2451]: https://github.com/encode/django-rest-framework/issues/2451 [gh2106]: https://github.com/encode/django-rest-framework/issues/2106 [gh2448]: https://github.com/encode/django-rest-framework/issues/2448 [gh2433]: https://github.com/encode/django-rest-framework/issues/2433 [gh2432]: https://github.com/encode/django-rest-framework/issues/2432 [gh2434]: https://github.com/encode/django-rest-framework/issues/2434 [gh2430]: https://github.com/encode/django-rest-framework/issues/2430 [gh2421]: https://github.com/encode/django-rest-framework/issues/2421 [gh2410]: https://github.com/encode/django-rest-framework/issues/2410 [gh2408]: https://github.com/encode/django-rest-framework/issues/2408 [gh2401]: https://github.com/encode/django-rest-framework/issues/2401 [gh2400]: https://github.com/encode/django-rest-framework/issues/2400 [gh2399]: https://github.com/encode/django-rest-framework/issues/2399 [gh2388]: https://github.com/encode/django-rest-framework/issues/2388 [gh2360]: https://github.com/encode/django-rest-framework/issues/2360 [gh1850]: https://github.com/encode/django-rest-framework/issues/1850 [gh2108]: https://github.com/encode/django-rest-framework/issues/2108 [gh2475]: https://github.com/encode/django-rest-framework/issues/2475 [gh2479]: https://github.com/encode/django-rest-framework/issues/2479 [gh2486]: https://github.com/encode/django-rest-framework/issues/2486 [gh2492]: https://github.com/encode/django-rest-framework/issues/2492 [gh2518]: https://github.com/encode/django-rest-framework/issues/2518 [gh2519]: https://github.com/encode/django-rest-framework/issues/2519 [gh2524]: https://github.com/encode/django-rest-framework/issues/2524 [gh2530]: https://github.com/encode/django-rest-framework/issues/2530 [gh2691]: https://github.com/encode/django-rest-framework/issues/2691 [gh2685]: https://github.com/encode/django-rest-framework/issues/2685 [gh2591]: https://github.com/encode/django-rest-framework/issues/2591 [gh2678]: https://github.com/encode/django-rest-framework/issues/2678 [gh2667]: https://github.com/encode/django-rest-framework/issues/2667 [gh2700]: https://github.com/encode/django-rest-framework/issues/2700 [gh2645]: https://github.com/encode/django-rest-framework/issues/2645 [gh2640]: https://github.com/encode/django-rest-framework/issues/2640 [gh2637]: https://github.com/encode/django-rest-framework/issues/2637 [gh2641]: https://github.com/encode/django-rest-framework/issues/2641 [gh2631]: https://github.com/encode/django-rest-framework/issues/2631 [gh2741]: https://github.com/encode/django-rest-framework/issues/2641 [gh2743]: https://github.com/encode/django-rest-framework/issues/2643 [gh2656]: https://github.com/encode/django-rest-framework/issues/2656 [gh2687]: https://github.com/encode/django-rest-framework/issues/2687 [gh2869]: https://github.com/encode/django-rest-framework/issues/2869 [gh2764]: https://github.com/encode/django-rest-framework/issues/2764 [gh2763]: https://github.com/encode/django-rest-framework/issues/2763 [gh2757]: https://github.com/encode/django-rest-framework/issues/2757 [gh2630]: https://github.com/encode/django-rest-framework/issues/2630 [gh2724]: https://github.com/encode/django-rest-framework/issues/2724 [gh2711]: https://github.com/encode/django-rest-framework/issues/2711 [gh2745]: https://github.com/encode/django-rest-framework/issues/2745 [gh2754]: https://github.com/encode/django-rest-framework/issues/2754 [gh2762]: https://github.com/encode/django-rest-framework/issues/2762 [gh2798]: https://github.com/encode/django-rest-framework/issues/2798 [gh2807]: https://github.com/encode/django-rest-framework/issues/2807 [gh2818]: https://github.com/encode/django-rest-framework/issues/2818 [gh2835]: https://github.com/encode/django-rest-framework/issues/2835 [gh2836]: https://github.com/encode/django-rest-framework/issues/2836 [gh2853]: https://github.com/encode/django-rest-framework/issues/2853 [gh2862]: https://github.com/encode/django-rest-framework/issues/2862 [gh2863]: https://github.com/encode/django-rest-framework/issues/2863 [gh2868]: https://github.com/encode/django-rest-framework/issues/2868 [gh2905]: https://github.com/encode/django-rest-framework/issues/2905 [gh2481]: https://github.com/encode/django-rest-framework/issues/2481 [gh2989]: https://github.com/encode/django-rest-framework/issues/2989 [gh2788]: https://github.com/encode/django-rest-framework/issues/2788 [gh3000]: https://github.com/encode/django-rest-framework/issues/3000 [gh2993]: https://github.com/encode/django-rest-framework/issues/2993 [gh2894]: https://github.com/encode/django-rest-framework/issues/2894 [gh2981]: https://github.com/encode/django-rest-framework/issues/2981 [gh2811]: https://github.com/encode/django-rest-framework/issues/2811 [gh2975]: https://github.com/encode/django-rest-framework/issues/2975 [gh2839]: https://github.com/encode/django-rest-framework/issues/2839 [gh2940]: https://github.com/encode/django-rest-framework/issues/2940 [gh2887]: https://github.com/encode/django-rest-framework/issues/2887 [gh2034]: https://github.com/encode/django-rest-framework/issues/2034 [gh2933]: https://github.com/encode/django-rest-framework/issues/2933 [gh2948]: https://github.com/encode/django-rest-framework/issues/2948 [gh2947]: https://github.com/encode/django-rest-framework/issues/2947 [gh2952]: https://github.com/encode/django-rest-framework/issues/2952 [gh2747]: https://github.com/encode/django-rest-framework/issues/2747 [gh2618]: https://github.com/encode/django-rest-framework/issues/2618 [gh3008]: https://github.com/encode/django-rest-framework/issues/3008 [gh2695]: https://github.com/encode/django-rest-framework/issues/2695 [gh1854]: https://github.com/encode/django-rest-framework/issues/1854 [gh2250]: https://github.com/encode/django-rest-framework/issues/2250 [gh2416]: https://github.com/encode/django-rest-framework/issues/2416 [gh2539]: https://github.com/encode/django-rest-framework/issues/2539 [gh2659]: https://github.com/encode/django-rest-framework/issues/2659 [gh2690]: https://github.com/encode/django-rest-framework/issues/2690 [gh2704]: https://github.com/encode/django-rest-framework/issues/2704 [gh2712]: https://github.com/encode/django-rest-framework/issues/2712 [gh2727]: https://github.com/encode/django-rest-framework/issues/2727 [gh2759]: https://github.com/encode/django-rest-framework/issues/2759 [gh2766]: https://github.com/encode/django-rest-framework/issues/2766 [gh2783]: https://github.com/encode/django-rest-framework/issues/2783 [gh2789]: https://github.com/encode/django-rest-framework/issues/2789 [gh2804]: https://github.com/encode/django-rest-framework/issues/2804 [gh2886]: https://github.com/encode/django-rest-framework/issues/2886 [gh2915]: https://github.com/encode/django-rest-framework/issues/2915 [gh2920]: https://github.com/encode/django-rest-framework/issues/2920 [gh2926]: https://github.com/encode/django-rest-framework/issues/2926 [gh2928]: https://github.com/encode/django-rest-framework/issues/2928 [gh2935]: https://github.com/encode/django-rest-framework/issues/2935 [gh3011]: https://github.com/encode/django-rest-framework/issues/3011 [gh3016]: https://github.com/encode/django-rest-framework/issues/3016 [gh3024]: https://github.com/encode/django-rest-framework/issues/3024 [gh3115]: https://github.com/encode/django-rest-framework/issues/3115 [gh3139]: https://github.com/encode/django-rest-framework/issues/3139 [gh3165]: https://github.com/encode/django-rest-framework/issues/3165 [gh3216]: https://github.com/encode/django-rest-framework/issues/3216 [gh3225]: https://github.com/encode/django-rest-framework/issues/3225 [gh3237]: https://github.com/encode/django-rest-framework/issues/3237 [gh3227]: https://github.com/encode/django-rest-framework/issues/3227 [gh3238]: https://github.com/encode/django-rest-framework/issues/3238 [gh3239]: https://github.com/encode/django-rest-framework/issues/3239 [gh3254]: https://github.com/encode/django-rest-framework/issues/3254 [gh3258]: https://github.com/encode/django-rest-framework/issues/3258 [gh2776]: https://github.com/encode/django-rest-framework/issues/2776 [gh3261]: https://github.com/encode/django-rest-framework/issues/3261 [gh3260]: https://github.com/encode/django-rest-framework/issues/3260 [gh3241]: https://github.com/encode/django-rest-framework/issues/3241 [gh3249]: https://github.com/encode/django-rest-framework/issues/3249 [gh3250]: https://github.com/encode/django-rest-framework/issues/3250 [gh3275]: https://github.com/encode/django-rest-framework/issues/3275 [gh3290]: https://github.com/encode/django-rest-framework/issues/3290 [gh3303]: https://github.com/encode/django-rest-framework/issues/3303 [gh3313]: https://github.com/encode/django-rest-framework/issues/3313 [gh3316]: https://github.com/encode/django-rest-framework/issues/3316 [gh3318]: https://github.com/encode/django-rest-framework/issues/3318 [gh3321]: https://github.com/encode/django-rest-framework/issues/3321 [gh2761]: https://github.com/encode/django-rest-framework/issues/2761 [gh3314]: https://github.com/encode/django-rest-framework/issues/3314 [gh3323]: https://github.com/encode/django-rest-framework/issues/3323 [gh3324]: https://github.com/encode/django-rest-framework/issues/3324 [gh3359]: https://github.com/encode/django-rest-framework/issues/3359 [gh3361]: https://github.com/encode/django-rest-framework/issues/3361 [gh3364]: https://github.com/encode/django-rest-framework/issues/3364 [gh3415]: https://github.com/encode/django-rest-framework/issues/3415 [gh3550]:https://github.com/encode/django-rest-framework/issues/3550 [gh3315]: https://github.com/encode/django-rest-framework/issues/3315 [gh3410]: https://github.com/encode/django-rest-framework/issues/3410 [gh3435]: https://github.com/encode/django-rest-framework/issues/3435 [gh3450]: https://github.com/encode/django-rest-framework/issues/3450 [gh3454]: https://github.com/encode/django-rest-framework/issues/3454 [gh3475]: https://github.com/encode/django-rest-framework/issues/3475 [gh3495]: https://github.com/encode/django-rest-framework/issues/3495 [gh3509]: https://github.com/encode/django-rest-framework/issues/3509 [gh3421]: https://github.com/encode/django-rest-framework/issues/3421 [gh3525]: https://github.com/encode/django-rest-framework/issues/3525 [gh3526]: https://github.com/encode/django-rest-framework/issues/3526 [gh3429]: https://github.com/encode/django-rest-framework/issues/3429 [gh3536]: https://github.com/encode/django-rest-framework/issues/3536 [gh3556]: https://github.com/encode/django-rest-framework/issues/3556 [gh3560]: https://github.com/encode/django-rest-framework/issues/3560 [gh3564]: https://github.com/encode/django-rest-framework/issues/3564 [gh3568]: https://github.com/encode/django-rest-framework/issues/3568 [gh3592]: https://github.com/encode/django-rest-framework/issues/3592 [gh3593]: https://github.com/encode/django-rest-framework/issues/3593 [gh3228]: https://github.com/encode/django-rest-framework/issues/3228 [gh3252]: https://github.com/encode/django-rest-framework/issues/3252 [gh3513]: https://github.com/encode/django-rest-framework/issues/3513 [gh3534]: https://github.com/encode/django-rest-framework/issues/3534 [gh3578]: https://github.com/encode/django-rest-framework/issues/3578 [gh3596]: https://github.com/encode/django-rest-framework/issues/3596 [gh3597]: https://github.com/encode/django-rest-framework/issues/3597 [gh3600]: https://github.com/encode/django-rest-framework/issues/3600 [gh3626]: https://github.com/encode/django-rest-framework/issues/3626 [gh3628]: https://github.com/encode/django-rest-framework/issues/3628 [gh3631]: https://github.com/encode/django-rest-framework/issues/3631 [gh3634]: https://github.com/encode/django-rest-framework/issues/3634 [gh3635]: https://github.com/encode/django-rest-framework/issues/3635 [gh3654]: https://github.com/encode/django-rest-framework/issues/3654 [gh3655]: https://github.com/encode/django-rest-framework/issues/3655 [gh3656]: https://github.com/encode/django-rest-framework/issues/3656 [gh3662]: https://github.com/encode/django-rest-framework/issues/3662 [gh3668]: https://github.com/encode/django-rest-framework/issues/3668 [gh3672]: https://github.com/encode/django-rest-framework/issues/3672 [gh3677]: https://github.com/encode/django-rest-framework/issues/3677 [gh3679]: https://github.com/encode/django-rest-framework/issues/3679 [gh3684]: https://github.com/encode/django-rest-framework/issues/3684 [gh3687]: https://github.com/encode/django-rest-framework/issues/3687 [gh3701]: https://github.com/encode/django-rest-framework/issues/3701 [gh3705]: https://github.com/encode/django-rest-framework/issues/3705 [gh3714]: https://github.com/encode/django-rest-framework/issues/3714 [gh3718]: https://github.com/encode/django-rest-framework/issues/3718 [gh3723]: https://github.com/encode/django-rest-framework/issues/3723 [gh3968]: https://github.com/encode/django-rest-framework/issues/3968 [gh3962]: https://github.com/encode/django-rest-framework/issues/3962 [gh3913]: https://github.com/encode/django-rest-framework/issues/3913 [gh3912]: https://github.com/encode/django-rest-framework/issues/3912 [gh3910]: https://github.com/encode/django-rest-framework/issues/3910 [gh3903]: https://github.com/encode/django-rest-framework/issues/3903 [gh3887]: https://github.com/encode/django-rest-framework/issues/3887 [gh3878]: https://github.com/encode/django-rest-framework/issues/3878 [gh3860]: https://github.com/encode/django-rest-framework/issues/3860 [gh3858]: https://github.com/encode/django-rest-framework/issues/3858 [gh3842]: https://github.com/encode/django-rest-framework/issues/3842 [gh3833]: https://github.com/encode/django-rest-framework/issues/3833 [gh3832]: https://github.com/encode/django-rest-framework/issues/3832 [gh3819]: https://github.com/encode/django-rest-framework/issues/3819 [gh3815]: https://github.com/encode/django-rest-framework/issues/3815 [gh3809]: https://github.com/encode/django-rest-framework/issues/3809 [gh3805]: https://github.com/encode/django-rest-framework/issues/3805 [gh3804]: https://github.com/encode/django-rest-framework/issues/3804 [gh3801]: https://github.com/encode/django-rest-framework/issues/3801 [gh3787]: https://github.com/encode/django-rest-framework/issues/3787 [gh3786]: https://github.com/encode/django-rest-framework/issues/3786 [gh3785]: https://github.com/encode/django-rest-framework/issues/3785 [gh3774]: https://github.com/encode/django-rest-framework/issues/3774 [gh3769]: https://github.com/encode/django-rest-framework/issues/3769 [gh3753]: https://github.com/encode/django-rest-framework/issues/3753 [gh3739]: https://github.com/encode/django-rest-framework/issues/3739 [gh3731]: https://github.com/encode/django-rest-framework/issues/3731 [gh3728]: https://github.com/encode/django-rest-framework/issues/3726 [gh3715]: https://github.com/encode/django-rest-framework/issues/3715 [gh3703]: https://github.com/encode/django-rest-framework/issues/3703 [gh3696]: https://github.com/encode/django-rest-framework/issues/3696 [gh3637]: https://github.com/encode/django-rest-framework/issues/3637 [gh3636]: https://github.com/encode/django-rest-framework/issues/3636 [gh3605]: https://github.com/encode/django-rest-framework/issues/3605 [gh3604]: https://github.com/encode/django-rest-framework/issues/3604 [gh2403]: https://github.com/encode/django-rest-framework/issues/2403 [gh2848]: https://github.com/encode/django-rest-framework/issues/2848 [gh2996]: https://github.com/encode/django-rest-framework/issues/2996 [gh3164]: https://github.com/encode/django-rest-framework/issues/3164 [gh3273]: https://github.com/encode/django-rest-framework/issues/3273 [gh3381]: https://github.com/encode/django-rest-framework/issues/3381 [gh3438]: https://github.com/encode/django-rest-framework/issues/3438 [gh3444]: https://github.com/encode/django-rest-framework/issues/3444 [gh3476]: https://github.com/encode/django-rest-framework/issues/3476 [gh3487]: https://github.com/encode/django-rest-framework/issues/3487 [gh3541]: https://github.com/encode/django-rest-framework/issues/3541 [gh3710]: https://github.com/encode/django-rest-framework/issues/3710 [gh3729]: https://github.com/encode/django-rest-framework/issues/3729 [gh3751]: https://github.com/encode/django-rest-framework/issues/3751 [gh3812]: https://github.com/encode/django-rest-framework/issues/3812 [gh3816]: https://github.com/encode/django-rest-framework/issues/3816 [gh3820]: https://github.com/encode/django-rest-framework/issues/3820 [gh3906]: https://github.com/encode/django-rest-framework/issues/3906 [gh3908]: https://github.com/encode/django-rest-framework/issues/3908 [gh3926]: https://github.com/encode/django-rest-framework/issues/3926 [gh3933]: https://github.com/encode/django-rest-framework/issues/3933 [gh3936]: https://github.com/encode/django-rest-framework/issues/3936 [gh3938]: https://github.com/encode/django-rest-framework/issues/3938 [gh3943]: https://github.com/encode/django-rest-framework/issues/3943 [gh3953]: https://github.com/encode/django-rest-framework/issues/3953 [gh3964]: https://github.com/encode/django-rest-framework/issues/3964 [gh3968]: https://github.com/encode/django-rest-framework/issues/3968 [gh3970]: https://github.com/encode/django-rest-framework/issues/3970 [gh3971]: https://github.com/encode/django-rest-framework/issues/3971 [gh3976]: https://github.com/encode/django-rest-framework/issues/3976 [gh3983]: https://github.com/encode/django-rest-framework/issues/3983 [gh3990]: https://github.com/encode/django-rest-framework/issues/3990 [gh4002]: https://github.com/encode/django-rest-framework/issues/4002 [gh4003]: https://github.com/encode/django-rest-framework/issues/4003 [gh4005]: https://github.com/encode/django-rest-framework/issues/4005 [gh4006]: https://github.com/encode/django-rest-framework/issues/4006 [gh4008]: https://github.com/encode/django-rest-framework/issues/4008 [gh4021]: https://github.com/encode/django-rest-framework/issues/4021 [gh4025]: https://github.com/encode/django-rest-framework/issues/4025 [gh4040]: https://github.com/encode/django-rest-framework/issues/4040 [gh4041]: https://github.com/encode/django-rest-framework/issues/4041 [gh4049]: https://github.com/encode/django-rest-framework/issues/4049 [gh4075]: https://github.com/encode/django-rest-framework/issues/4075 [gh4079]: https://github.com/encode/django-rest-framework/issues/4079 [gh4090]: https://github.com/encode/django-rest-framework/issues/4090 [gh4097]: https://github.com/encode/django-rest-framework/issues/4097 [gh4098]: https://github.com/encode/django-rest-framework/issues/4098 [gh4103]: https://github.com/encode/django-rest-framework/issues/4103 [gh4105]: https://github.com/encode/django-rest-framework/issues/4105 [gh4106]: https://github.com/encode/django-rest-framework/issues/4106 [gh4107]: https://github.com/encode/django-rest-framework/issues/4107 [gh4118]: https://github.com/encode/django-rest-framework/issues/4118 [gh4146]: https://github.com/encode/django-rest-framework/issues/4146 [gh4149]: https://github.com/encode/django-rest-framework/issues/4149 [gh4153]: https://github.com/encode/django-rest-framework/issues/4153 [gh4156]: https://github.com/encode/django-rest-framework/issues/4156 [gh4157]: https://github.com/encode/django-rest-framework/issues/4157 [gh4158]: https://github.com/encode/django-rest-framework/issues/4158 [gh4166]: https://github.com/encode/django-rest-framework/issues/4166 [gh4176]: https://github.com/encode/django-rest-framework/issues/4176 [gh4179]: https://github.com/encode/django-rest-framework/issues/4179 [gh4180]: https://github.com/encode/django-rest-framework/issues/4180 [gh4181]: https://github.com/encode/django-rest-framework/issues/4181 [gh4185]: https://github.com/encode/django-rest-framework/issues/4185 [gh4187]: https://github.com/encode/django-rest-framework/issues/4187 [gh4191]: https://github.com/encode/django-rest-framework/issues/4191 [gh4192]: https://github.com/encode/django-rest-framework/issues/4192 [gh4194]: https://github.com/encode/django-rest-framework/issues/4194 [gh4195]: https://github.com/encode/django-rest-framework/issues/4195 [gh4196]: https://github.com/encode/django-rest-framework/issues/4196 [gh4212]: https://github.com/encode/django-rest-framework/issues/4212 [gh4215]: https://github.com/encode/django-rest-framework/issues/4215 [gh4217]: https://github.com/encode/django-rest-framework/issues/4217 [gh4219]: https://github.com/encode/django-rest-framework/issues/4219 [gh4229]: https://github.com/encode/django-rest-framework/issues/4229 [gh4233]: https://github.com/encode/django-rest-framework/issues/4233 [gh4244]: https://github.com/encode/django-rest-framework/issues/4244 [gh4246]: https://github.com/encode/django-rest-framework/issues/4246 [gh4253]: https://github.com/encode/django-rest-framework/issues/4253 [gh4254]: https://github.com/encode/django-rest-framework/issues/4254 [gh4255]: https://github.com/encode/django-rest-framework/issues/4255 [gh4256]: https://github.com/encode/django-rest-framework/issues/4256 [gh4259]: https://github.com/encode/django-rest-framework/issues/4259 [gh4323]: https://github.com/encode/django-rest-framework/issues/4323 [gh4268]: https://github.com/encode/django-rest-framework/issues/4268 [gh4321]: https://github.com/encode/django-rest-framework/issues/4321 [gh4308]: https://github.com/encode/django-rest-framework/issues/4308 [gh4305]: https://github.com/encode/django-rest-framework/issues/4305 [gh4316]: https://github.com/encode/django-rest-framework/issues/4316 [gh4294]: https://github.com/encode/django-rest-framework/issues/4294 [gh4293]: https://github.com/encode/django-rest-framework/issues/4293 [gh4315]: https://github.com/encode/django-rest-framework/issues/4315 [gh4314]: https://github.com/encode/django-rest-framework/issues/4314 [gh4289]: https://github.com/encode/django-rest-framework/issues/4289 [gh4265]: https://github.com/encode/django-rest-framework/issues/4265 [gh4285]: https://github.com/encode/django-rest-framework/issues/4285 [gh4287]: https://github.com/encode/django-rest-framework/issues/4287 [gh4313]: https://github.com/encode/django-rest-framework/issues/4313 [gh4281]: https://github.com/encode/django-rest-framework/issues/4281 [gh4299]: https://github.com/encode/django-rest-framework/issues/4299 [gh4307]: https://github.com/encode/django-rest-framework/issues/4307 [gh4302]: https://github.com/encode/django-rest-framework/issues/4302 [gh4303]: https://github.com/encode/django-rest-framework/issues/4303 [gh4298]: https://github.com/encode/django-rest-framework/issues/4298 [gh4291]: https://github.com/encode/django-rest-framework/issues/4291 [gh4270]: https://github.com/encode/django-rest-framework/issues/4270 [gh4272]: https://github.com/encode/django-rest-framework/issues/4272 [gh4273]: https://github.com/encode/django-rest-framework/issues/4273 [gh4288]: https://github.com/encode/django-rest-framework/issues/4288 [gh3565]: https://github.com/encode/django-rest-framework/issues/3565 [gh3610]: https://github.com/encode/django-rest-framework/issues/3610 [gh4198]: https://github.com/encode/django-rest-framework/issues/4198 [gh4199]: https://github.com/encode/django-rest-framework/issues/4199 [gh4236]: https://github.com/encode/django-rest-framework/issues/4236 [gh4292]: https://github.com/encode/django-rest-framework/issues/4292 [gh4296]: https://github.com/encode/django-rest-framework/issues/4296 [gh4318]: https://github.com/encode/django-rest-framework/issues/4318 [gh4330]: https://github.com/encode/django-rest-framework/issues/4330 [gh4331]: https://github.com/encode/django-rest-framework/issues/4331 [gh4332]: https://github.com/encode/django-rest-framework/issues/4332 [gh4335]: https://github.com/encode/django-rest-framework/issues/4335 [gh4336]: https://github.com/encode/django-rest-framework/issues/4336 [gh4338]: https://github.com/encode/django-rest-framework/issues/4338 [gh4339]: https://github.com/encode/django-rest-framework/issues/4339 [gh4340]: https://github.com/encode/django-rest-framework/issues/4340 [gh4344]: https://github.com/encode/django-rest-framework/issues/4344 [gh4345]: https://github.com/encode/django-rest-framework/issues/4345 [gh4346]: https://github.com/encode/django-rest-framework/issues/4346 [gh4347]: https://github.com/encode/django-rest-framework/issues/4347 [gh4348]: https://github.com/encode/django-rest-framework/issues/4348 [gh4349]: https://github.com/encode/django-rest-framework/issues/4349 [gh4354]: https://github.com/encode/django-rest-framework/issues/4354 [gh4357]: https://github.com/encode/django-rest-framework/issues/4357 [gh4358]: https://github.com/encode/django-rest-framework/issues/4358 [gh4359]: https://github.com/encode/django-rest-framework/issues/4359 [gh4361]: https://github.com/encode/django-rest-framework/issues/4361 [gh4416]: https://github.com/encode/django-rest-framework/issues/4416 [gh4409]: https://github.com/encode/django-rest-framework/issues/4409 [gh4415]: https://github.com/encode/django-rest-framework/issues/4415 [gh4410]: https://github.com/encode/django-rest-framework/issues/4410 [gh4408]: https://github.com/encode/django-rest-framework/issues/4408 [gh4398]: https://github.com/encode/django-rest-framework/issues/4398 [gh4407]: https://github.com/encode/django-rest-framework/issues/4407 [gh4403]: https://github.com/encode/django-rest-framework/issues/4403 [gh4404]: https://github.com/encode/django-rest-framework/issues/4404 [gh4412]: https://github.com/encode/django-rest-framework/issues/4412