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.