REST-фреймворк Django 3.8

Выпуск 3.8 - это выпуск, ориентированный на техническое обслуживание, в котором решено большое количество ранее нерешенных проблем и заложены основы для будущих изменений.


Финансирование

Если вы используете REST framework в коммерческих целях и хотите, чтобы эта работа продолжалась, мы настоятельно рекомендуем вам инвестировать в ее дальнейшее развитие путем ** `signing up for a paid&nbsp;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.

Вернуться на верх