Примечания к выпуску¶
Версионирование¶
Минорные номера версий (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_contextAPI 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, который принимаетdetailbool. Вместо него используйте@action(detail=True). gh6687Утрачиваем декоратор
list_routeв пользуaction, который принимаетdetailbool. Вместо него используйте@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.registerbase_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+defaultunique_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сdetailboolean.Отменены варианты динамического списка/детального маршрута в пользу
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_settingscompat #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_representationdocs #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_CLASSNoneпо умолчанию. 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_MODELcompat. ([#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вSerializercreate()/**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