3.3 Announcement

Django REST framework 3.3

3.3 版本标志着 Kickstarter 资助系列的最终工作。我们想向所有精彩的赞助商和支持者致以响亮的谢意

由于资金直接结果而实现的工作量是巨大的。我们添加了大量的新功能,解决了近 2000 票,并且重新设计和完善了项目的大部分内容。

为了继续推动 REST framework 向前发展,我们将很快宣布一套新的资助计划。关注@_tomchristie,以及时更新这些公告,并成为首批注册会员。

我们坚信,合作资助的软件开发能够以相对较低的人均投资获得出色的成果。如果您或您的公司在商业上使用 REST framework,那么我们将强烈敦促您参与这一最新的资金驱动,并帮助我们继续构建一个日益完善和专业的产品。


发行说明 (Release notes)

3.3 版本中的重要新功能包括:

  • 过滤器在可浏览的 API 中显示为 HTML 控件。
  • 表单 API,允许将序列化器渲染为 HTML 表单。
  • Django 1.9 支持。
  • JSONField 序列化器字段,对应于 Django 1.9 的 Postgres JSONField 模型字段。
  • 通过 AJAX 提供可浏览的 API 支持,而不是服务器端请求重载。

3.3 Announcement

新过滤器控件的示例


支持的版本 (Supported versions)

此版本不再支持 Django 1.5 和 1.6。Django 1.7,1.8 或 1.9 现在是必需的。

这使我们支持的版本与 Django 目前支持的版本一致。

弃用 (Deprecations)

基于 AJAX 的可浏览 API 支持意味着请求类中有许多内部清理。对于绝大多数开发人员来说,这应该基本上保持透明:

  • 要支持基于表单的 PUTDELETE,或者支持表单内容类型 (比如 JSON),您现在应该使用 AJAX 表单 javascript 库。这替换了以前的 “方法和内容类型重载”,这要求请求类具有显著的内部复杂性。
  • 默认内容协商类不再支持 accept 查询参数。如果您需要,那么您将需要使用自定义内容协商类
  • 默认不再支持自定义 HTTP_X_HTTP_METHOD_OVERRIDE 标头。如果您需要它,那么您将需要使用自定义中间件

自 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 代替。

ModelSerializerHyperlinkedModelSerializer 类现在应该包含 fieldsexclude 选项,尽管可以使用 fields = '__all__' 快捷方式。没有包括这两个选项中的任何一个,目前正在等待弃用,并将在 3.5 版本中完全删除。这种行为使 ModelSerializer 更加符合 Django 的 ModelForm 行为。