REST-фреймворк Django 3.3¶
Выпуск версии 3.3 является завершающим в серии работ, финансируемых с помощью Kickstarter. Мы хотели бы сказать огромное спасибо всем нашим замечательным спонсорам и сторонникам.
Объем работы, проделанной в результате финансирования, огромен. Мы добавили огромное количество новых функций, решили почти 2 000 проблем, переработали и доработали значительные части проекта.
Для того чтобы продолжать развивать REST framework, мы вскоре объявим о новых планах финансирования. Следите за @_tomchristie, чтобы быть в курсе этих объявлений, и будьте в числе первых подписавшихся.
Мы твердо убеждены, что совместная разработка программного обеспечения дает выдающиеся результаты при относительно небольших инвестициях на одного человека. Если вы или ваша компания используете REST framework в коммерческих целях, то мы настоятельно просим вас принять участие в этой последней акции финансирования и помочь нам продолжить создание все более совершенного и профессионального продукта.
Примечания к выпуску¶
Значительные новые функции в версии 3.3 включают:
Фильтры, представленные в виде элементов управления HTML в просматриваемом API.
A :doc:`forms API <../topics/html-and-forms>`** , позволяющий отображать сериализаторы в виде HTML-форм.
Поддержка Django 1.9.
A ** ``JSONField:doc:` serializer field <../api-guide/fields#jsonfield>`** , что соответствует полю модели Postgres
JSONField
в Django 1.9.Поддержка API с возможностью просмотра :doc:`via AJAX <https://github.com/encode/ajax-form>`** , а не перегрузка запросов на стороне сервера.
Пример новых элементов управления фильтрами.
Поддерживаемые версии¶
В этом выпуске прекращена поддержка Django 1.5 и 1.6. Теперь требуется Django 1.7, 1.8 или 1.9.
Это приводит наши поддерживаемые версии в соответствие с Django currently supported versions.
Амортизация¶
Поддержка AJAX для просматриваемого API означает, что в классе request
есть ряд внутренних очисток. Для подавляющего большинства разработчиков это должно оставаться прозрачным:
Для поддержки форм
PUT
иDELETE
, или для поддержки типов содержимого формы, таких как JSON, теперь следует использовать библиотеку AJAX forms javascript. Это заменяет предыдущую «перегрузку методов и типов содержимого», которая требовала значительного усложнения класса запроса.Параметр запроса
accept
больше не поддерживается классом согласования содержимого по умолчанию. Если он вам необходим, то вам нужно use a custom content negotiation class.Пользовательский заголовок
HTTP_X_HTTP_METHOD_OVERRIDE
больше не поддерживается по умолчанию. Если он вам необходим, то вам нужно use custom middleware.
Следующие атрибуты и настройки представления пагинации были перенесены в атрибуты класса пагинации начиная с версии 3.1. Их использование ранее было устаревшим, а теперь полностью удалено в соответствии с политикой устаревания.
view.paginate_by
- Вместо этого используйтеpaginator.page_size
.view.page_query_param
- Вместо этого используйтеpaginator.page_query_param
.view.paginate_by_param
- Вместо этого используйтеpaginator.page_size_query_param
.view.max_paginate_by
- Вместо этого используйтеpaginator.max_page_size
.settings.PAGINATE_BY
- Вместо этого используйтеpaginator.page_size
.settings.PAGINATE_BY_PARAM
- Вместо этого используйтеpaginator.page_size_query_param
.settings.MAX_PAGINATE_BY
- Вместо этого используйтеpaginator.max_page_size
.
Классы ModelSerializer
и HyperlinkedModelSerializer
теперь должны включать опцию fields
или exclude
, хотя можно использовать и ярлык fields = '__all__'
. Отказ от включения одной из этих двух опций в настоящее время находится на стадии обесценивания и будет полностью удален в релизе 3.5. Такое поведение делает ModelSerializer
более близким к поведению ModelForm
в Django.