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.