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 的 PostgresJSONField
模型字段。- 通过 AJAX 提供可浏览的 API 支持,而不是服务器端请求重载。
新过滤器控件的示例
支持的版本 (Supported versions)
此版本不再支持 Django 1.5 和 1.6。Django 1.7,1.8 或 1.9 现在是必需的。
这使我们支持的版本与 Django 目前支持的版本一致。
弃用 (Deprecations)
基于 AJAX 的可浏览 API 支持意味着请求类中有许多内部清理。对于绝大多数开发人员来说,这应该基本上保持透明:
- 要支持基于表单的
PUT
和DELETE
,或者支持表单内容类型 (比如 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
代替。
ModelSerializer
和 HyperlinkedModelSerializer
类现在应该包含 fields
或 exclude
选项,尽管可以使用 fields = '__all__'
快捷方式。没有包括这两个选项中的任何一个,目前正在等待弃用,并将在 3.5 版本中完全删除。这种行为使 ModelSerializer
更加符合 Django 的 ModelForm
行为。