REST-фреймворк Django 3.8¶
Выпуск 3.8 - это выпуск, ориентированный на техническое обслуживание, в котором решено большое количество ранее нерешенных проблем и заложены основы для будущих изменений.
Финансирование¶
Если вы используете REST framework в коммерческих целях и хотите, чтобы эта работа продолжалась, мы настоятельно рекомендуем вам инвестировать в ее дальнейшее развитие путем ** `signing up for a paid plan <funding>`_** **.
Мы хотели бы выразить особую благодарность нашим премиум-бэкерам, :doc:`Rover <https://www.rover.com/careers/>`* , Sentry.*.
Разрывные изменения¶
Изменено поведение read_only
плюс default
на поле.¶
#5886 read_only
поля теперь всегда будут исключаться из записываемых полей.
Ранее поля read_only
в сочетании со значением default
использовали default
для операций создания и обновления. Это было неинтуитивно понятно в некоторых обстоятельствах и приводило к трудностям при поддержке точечных атрибутов source
в отношениях с нулевым значением.
Чтобы сохранить старое поведение, вам может понадобиться передать значение полей read_only
при вызове save()
в представлении:
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
В качестве альтернативы вы можете переопределить save()
или create()
или update()
на сериализаторе в зависимости от ситуации.
Амортизация¶
Декоратор action
заменяет list_route
и detail_route
¶
#5705 list_route
и detail_route
были объединены в один декоратор action
. Это улучшает интроспекцию действий набора представлений и позволит отображать дополнительные действия в Browsable API в будущих версиях.
Как list_route
, так и detail_route
в настоящее время ожидают депривации. Они будут устаревшими в версии 3.9 и полностью удалены в версии 3.10.
Новый декоратор action
принимает булевый аргумент detail
.
Замените использование
detail_route
на@action(detail=True)
.Замените использование
list_route
на@action(detail=False)
.
exclude_from_schema
¶
Оба аргумента APIView.exclude_from_schema
и exclude_from_schema
декоратора @api_view
теперь устарели. Они будут полностью удалены в версии 3.9.
Для APIView
следует вместо этого установить атрибут schema = None
в классе представления.
Для представлений, основанных на функциях, декоратор @schema
может быть использован для исключения представления из схемы, используя @schema(None)
.
Мелкие исправления и улучшения¶
В этом выпуске содержится большое количество мелких исправлений и улучшений. Полный список смотрите на странице release notes.
Что дальше¶
В настоящее время мы работаем над тем, чтобы перейти к использованию OpenAPI в качестве вывода схемы по умолчанию. Мы также будем пересматривать генерацию документации по API и клиентские библиотеки.
Мы проводим некоторую консолидацию для того, чтобы это произошло. Планируется, что 3.9 откажется от библиотек coreapi
и coreschema
, и вместо этого будет использовать apistar
для генерации документации API, генерации схем и клиентских библиотек API.