发行说明

版本控制

次要版本号 (0.0.x) 用于 API 兼容的更改。您应该能够在次要版本发布之间升级,而无需进行任何其他代码更改。

中等版本号 (0.x.0) 可能包括 API 更改,符合 弃用政策。在中等版本发布之间升级之前,您应该仔细阅读发行说明。

主要版本号 (x.0.0) 保留用于重要的项目里程碑。

弃用政策

REST 框架发布遵循正式的弃用政策,该政策符合 Django 的弃用政策

版本 1.0 中存在的某个功能的弃用时间表如下

  • 版本 1.1 将保持与 1.0 完全向后兼容,但如果您使用即将弃用的功能,它将引发 RemovedInDRF13Warning 警告(继承自 PendingDeprecationWarning)。这些警告默认情况下是静默的,但当您准备好开始迁移任何必需的更改时,可以显式启用它们。例如,如果您开始使用 python -Wd manage.py test 运行测试,您将收到有关您需要进行的任何 API 更改的警告。

  • 版本 1.2 将这些警告升级为继承自 DeprecationWarning 的子类,该子类默认情况下是响亮的。

  • 版本 1.3 将完全删除已弃用的 API 部分。

请注意,根据 Django 的政策,文档中未提及的框架的任何部分通常应被视为私有 API,并且可能会发生更改。

升级

要将 Django REST 框架升级到最新版本,请使用 pip

pip install -U djangorestframework

您可以使用 pip show 确定当前安装的版本

pip show djangorestframework

3.15.x 系列

3.15.1

日期:2024 年 3 月 22 日

  • 修复了 SearchFilter 对带引号和逗号分隔字符串的处理,当自定义类调用 .get_search_terms 时。请参阅 [#9338]
  • 恢复了 3.15.0 版中包含意外副作用的多个问题。请参阅 [#9331]

3.15.0

日期:2024 年 3 月 15 日

  • 支持 Django 5.0 和 Python 3.12 [#9157]
  • 在可浏览 API 中使用 POST 方法而非 GET 方法执行注销 [9208]
  • 添加 jQuery 3.7.1 支持并放弃了之前的版本 [#9094]
  • 使用 str 作为默认路径转换器 [#9066]
  • 记录了 Python 3.11 中添加的 @action 装饰器中对 http.HTTPMethod 的支持 [#9067]
  • 更新 exceptions.md [#9071]
  • 部分序列化器不应具有必需字段 [#7563]
  • 将“default”从模型字段传播到序列化器字段。[#9030]
  • 允许在 ListSerializer 中覆盖 child.run_validation 调用 [#8035]
  • 将 SearchFilter 行为与 django.contrib.admin 搜索保持一致 [#9017]
  • 将类名添加到未知字段错误中 [#9019]
  • 修复:分页响应模式。[#9049]
  • 修复 ChoiceField 中的选择以支持 IntEnum [#8955]
  • 修复 SearchFilter 使用无效值呈现搜索字段 [#9023]
  • 修复 timedelta 的 OpenAPI 模式 yaml 呈现 [#9007]
  • 修复 NamespaceVersioning 忽略非 None 命名空间上的 DEFAULT_VERSION [#7278]
  • 为 CoreAPI 添加弃用警告 [#7519]
  • 删除触发完整表加载的 field.choices 的用法 [#8950]
  • 允许 BooleanField 验证的字符串值混合大小写 [#8970]
  • 修复 BrowsableAPIRenderer 以便与 ListSerializer 一起使用。[#7530]
  • 更改两个权限类的 OR 的语义 [#7522]
  • 移除对 pytz 的依赖 [#8984]
  • 使 set_value 成为 Serializer 中的一个方法 [#8001]
  • 修复 URLPathVersioning 反向回退 [#7247]
  • 在 DecimalField 的 min_value 和 max_value 参数中警告 Decimal 类型 [#8972]
  • 修复选项值映射 [#8968]
  • 重构读取函数以使用上下文管理器进行文件处理 [#8967]
  • 修复:如果在视图中未设置,则回退到 CursorPagination 排序 [#8954]
  • dict 替换 OrderedDict [#8964]
  • 重构 get_field_info 方法,以在 SimpleMetadata 类中包含 max_digits 和 decimal_places 属性 [#8943]
  • 为验证器实现 __eq__ [#8925]
  • 确保 CursorPagination 尊重排序字段中的空值 [#8912]
  • 使用 ZoneInfo 作为时区数据的主要来源 [#8924]
  • 为 TokenAdmin 添加用户名搜索字段 (#8927) [#8934]
  • 当 many=False 时,在 SlugRelatedField 中处理嵌套关系 [#8922]
  • 将 jQuery 版本提升至 3.6.4 并更新参考链接 [#8909]
  • 支持 UniqueConstraint [#7438]
  • 允许 Request、Response、Field 和 GenericAPIView 可订阅。这允许这些类泛化为类型检查。 [#8825]
  • 特性:对 ValidationError 进行一些更改以支持 django 风格的验证错误 [#8863]
  • 修复在 DjangoModelPermissions 中尊重 can_read_model 权限 [#8009]
  • 添加 SimplePathRouter [#6789]
  • 更新后重新预取相关对象 [#8043]
  • 修复 FilePathField 必需参数 [#8805]
  • 如果 basename 不是唯一的,则引发 ImproperlyConfigured 异常 [#8438]
  • 在 openapi 中使用 PrimaryKeyRelatedField pkfield [#8315]
  • 在 BasicAuthentication 中用 split 替换 partition [#8790]
  • 修复 BooleanField 的 allow_null 行为 [#8614]
  • 在 ListField 中处理 Django 的 ValidationErrors [#6423]
  • 移除一些内联 CSS。在可能需要且可用的地方添加 CSP nonce [#8783]
  • 在 Token 管理中使用自动完成小部件进行用户选择 [#8534]
  • 使可浏览 API 与强 CSP 兼容 [#8784]
  • 避免内联脚本执行以注入 CSRF 令牌 [#7016]
  • 减轻对 inflection 的全局依赖 [#8017] [#8781]
  • 注册 Django URL [#8778]
  • 为 TokenProxy 实现冗长名称翻译 [#8713]
  • 在 DurationField 反序列化中正确处理 OverflowError [#8042]
  • 适当地修复 OpenAPI 操作名称复数 [#8017]
  • 在架构渲染中将 SafeString 表示为普通字符串 [#8429]
  • 修复 #8771 - 即使 _ignore_model_permissions = True 也检查身份验证 [#8772]
  • 修复当页面查询参数为空字符串时出现的 404 [#8578]
  • 修复 ListSerializer.to_representation 中的实例检查 [#8726] [#8727]
  • 如果输入的数字太大,FloatField 将崩溃 [#8725]
  • 将缺失的 DurationField 添加到 SimpleMetada label_lookup [#8702]
  • 添加对 Python 3.11 的支持 [#8752]
  • 使请求在分页类中始终可用 [#8764]
  • 可以在 DecimalFields 表示中移除尾随零 [#6514]
  • 添加用于获取序列化器字段名称的方法 (OpenAPI) [#7493]
  • OperandHolder 类添加 __eq__ 方法 [#8710]
  • 在不进行测试时避免导入 django.test 包 [#8699]
  • 保留包装的 Django 异常的异常消息 [#8051]
  • examplesformat 包含到 CursorPagination 的 OpenAPI 架构中 [#8687] [#8686]
  • 修复请求上的 deepcopy 无限递归 [#8684]
  • 重构:用 contextlib.suppress() 替换 try/except [#8676]
  • SerializeMethodField 文档字符串的次要修复 [#8629]
  • 次要重构:不必要地使用 list() 函数 [#8672]
  • 不必要的列表解析 [#8670]
  • 使用正确的类来指示当前弃用 [#8665]

3.14.x 系列

3.14.0

日期:2022 年 9 月 22 日

  • 不再支持 Django 2.2。[#8662]
  • Django 4.1 兼容性。[#8591]
  • 向 generateschema 管理命令添加 --api-version CLI 选项。[#8663]
  • 强制 is_valid(raise_exception=False) 作为仅关键字参数。[#7952]
  • 停止在 Validators 上调用 set_context。[#8589]
  • ErrorDetails.__ne__ 返回 NotImplemented。[#8538]
  • 当设置自定义时区时,不要评估 DateTimeField.default_timezone。[#8531]
  • 使可浏览 API 中的相对 URL 可点击。[#8464]
  • 支持 ManyRelatedField 在点符号指定的属性不存在时回退到默认值。将 ManyRelatedField.get_attributeField.get_attribute 匹配。[#7574]
  • 公开 schemas.openapi.get_reference。[#7515]
  • 使 ReturnDict 支持 Python 3.9 及更高版本的 dict 并集运算符。[#8302]
  • 更新节流以检查 request.user 是否已设置,然后再检查用户是否已通过身份验证。[#8370]

3.13.x 系列

3.13.1

日期:2021 年 12 月 15 日

  • 使用基于函数的 @api_view 恢复模式命名更改。[#8297]

3.13.0

日期:2021 年 12 月 13 日

  • Django 4.0 兼容性。[#8178]
  • ListSerializer 添加 max_lengthmin_length 选项。[#8165]
  • AutoSchema 添加 get_request_serializerget_response_serializer 钩子。[#7424]
  • 修复 OpenAPI 对空可读字段的表示。[#8116]
  • 在 API 架构输出中尊重 UNICODE_JSON 设置。[#7991]
  • 修复 RemoteUserAuthentication。[#7158]
  • 使字段构造函数仅限关键字。[#7632]

3.12.x 系列

3.12.4

日期:2021 年 3 月 26 日

  • 恢复使用 deque 而不是 list 来跟踪节流 .history。(由于与 DjangoRedis 缓存后端不兼容。参见 #7870)[#7872]

3.12.3

日期:2021 年 3 月 25 日

  • 在使用多个数据库配置时正确处理 ATOMIC_REQUESTS。[#7739]
  • 当配置了 LimitOffsetPagination 但请求中未包含分页参数时,绕过 COUNT 查询。[#6098]
  • 尊重 DecimalField 上的 allow_null=True。[#7718]
  • 允许 BooleanField 使用标题大小写的 "Yes"/"No" 值。[#7739]
  • 添加 PageNumberPagination.get_page_number() 方法以覆盖行为。[#7652]
  • 修复了 OpenAPI 架构中 timedelta 值的渲染,当它们作为默认值、最小值或最大值字段出现时。[#7641]
  • 在可浏览的 API 表单中以缩进方式渲染 JSONFields。[#6243]
  • 删除了管理令牌视图中的不必要的数据库查询。[#7852]
  • 在将布尔值传递给 PrimaryKeyRelatedField 字段时引发验证错误,而不是转换为整数。[#7597]
  • 不要将模型属性作为使用 OrderingFilter 自动生成的排序字段。[#7609]
  • 使用 deque 而不是 list 来跟踪节流 .history。[#7849]

3.12.2

日期:2020 年 10 月 13 日

  • 修复了导入 rest_framework.authtoken.modelsrest_framework.authtoken 不在 INSTALLED_APPS 中的问题。[#7571]
  • 在 OpenAPI 架构中忽略 BrowsableAPIRenderer 的子类。[#7497]
  • 缩小了序列化字段中的异常捕获范围,以确保不会掩盖损坏的 get_queryset() 方法中的任何错误。[#7480]

3.12.1

日期:2020 年 9 月 28 日

  • 添加 TokenProxy 迁移。[#7557]

3.12.0

日期:2020 年 9 月 28 日

  • generateschema 命令添加 --file 选项。[#7130]
  • 支持 OpenAPI 架构生成中的 tags。请参阅 架构文档。[#7184]
  • 支持自定义架构生成的操作 ID。请参阅 架构文档。[#7190]
  • 支持架构生成中的 OpenAPI 组件。请参阅 架构文档。[#7124]
  • AutoSchema 上的以下方法成为公共 API:get_path_parametersget_pagination_parametersget_filter_parametersget_request_bodyget_responsesget_serializerget_paginatormap_serializermap_fieldmap_choice_fieldmap_field_validatorsallows_filters。请参阅 架构文档
  • 添加对 Django 3.1 的数据库不可知 JSONField 的支持。[#7467]
  • SearchFilter 现在支持对 JSONFieldHStoreField 模型字段进行嵌套搜索。[#7121]
  • SearchFilter 现在支持搜索 annotate() 字段。[#6240]
  • authtoken 模型不再在管理 URL 中公开 pk。[#7341]
  • 为 Request 实例添加 __repr__。[#7239]
  • 使用 Latin-1 回退对基本身份验证凭证进行 UTF-8 解码。[#7193]
  • CharField 将代理字符视为验证失败。[#7026]
  • 不要将可调用对象作为默认值包含在模式中。[#7105]
  • 改进 ListField 模式输出,以包含所有可用的子信息。[#7137]
  • 允许将 default=False 包含在 BooleanField 模式输出中。[#7165]
  • ChoiceField 模式输出中包含 "type" 信息。[#7161]
  • 在模式对象上包含 "type": "object"。[#7169]
  • 不要在 DELETE 请求的模式输出中包含组件。[#7229]
  • 修复 DecimalField 的模式类型。[#7254]
  • 修复 ObtainAuthToken 视图的模式生成。[#7211]
  • 支持将 context=... 传递给视图 .get_serializer() 方法。[#7298]
  • 如果权限类设置了权限,则将自定义代码传递给 PermissionDenied。[#7306]
  • 在模式分页输出中包含“示例”。[#7275]
  • POST 请求的模式输出中状态代码的默认值为 201。[#7206]
  • 在模式输出中对操作 ID 使用驼峰式。[#7208]
  • 如果模式输出中存在重复的操作 ID,则发出警告。[#7207]
  • 在将 ChoiceField 映射到模式输出时,改进对十进制类型的处理。[#7264]
  • 禁用 OpenAPI 模式输出的 YAML 别名。[#7131]
  • 修复在命名空间 URL 下包含的 API 的操作 URL 名称。[#7287]
  • 将 jQuery 版本从 3.4 更新到 3.5。[#7313]
  • 修复当序列化器字段使用 source=...UniqueTogether 的处理。[#7143]
  • HTTP HEAD 请求现在在 ViewSet 实例上正确设置 self.action。[#7223]
  • 在不存在 API 模式路径的情况下返回有效的 OpenAPI 模式。[#7125]
  • 在软件包分发中包含测试。[#7145]
  • 允许类型检查器支持诸如 ModelSerializer[Author] 的注释。[#7385]
  • 使用 APIClient 时,不要在请求 Content-Type 标头中包含无效的 charset=None 部分。[#7400]
  • 修复 OpenAPI 正则表达式中的 \Z/\z 令牌。[#7389]
  • 当源字段实际上是属性时,修复 PrimaryKeyRelatedFieldHyperlinkedRelatedField。[#7142]
  • Token.generate_key 现在是一个类方法。[#7502]
  • 如果方法被包装在一个不使用 @functools.wraps 保留信息的装饰器中,@action 会发出警告。[#7098]
  • 弃用 serializers.NullBooleanField,转而使用 serializers.BooleanFieldallow_null=True [#7122]

3.11.x 系列

3.11.2

日期:2020 年 9 月 30 日

  • 安全:弃用 urlize_quoted_links 模板标签,转而使用 Django 内置的 urlize。消除了可浏览 API 中某些类型内容的 XSS 漏洞。

3.11.1

日期:2020 年 8 月 5 日

  • 修复与 Django 3.1 的兼容性

3.11.0

日期:2019 年 12 月 12 日

  • 弃用 .set_context API 转而使用 requires_context 标记
  • 将带有选项的 TextField 的默认小部件更改为选择框。 #6892
  • 支持对非关系字段(例如 JSONField)进行嵌套写入。 #6916
  • 根据配置的解析器/渲染器,在 OpenAPI 架构中包含请求/响应媒体类型。 #6865
  • 根据视图上的文档字符串,在 OpenAPI 架构中包含操作描述。 #6898
  • 修复 OpenAPI 架构中所有可选字段的序列化器表示形式。 #6941, #6944
  • 修复 OpenAPI 架构中 serializers.HStoreField 的表示形式。 #6914
  • 修复未提供标题或版本时 OpenAPI 的生成。 #6912
  • 在 OpenAPI 架构中使用 int64 表示形式表示大整数。 #7018
  • 如果在字段子类上未提供 .to_representation 实现,则改进错误消息。 #6996
  • 修复使用多重继承的序列化器类。 #6980
  • 修复反转具有路径中百分比编码组件的超链接 URL 字段。 #7059
  • 将 Bootstrap 更新到 3.4.1。 #6923

3.10.x 系列

3.10.3

日期:2019 年 9 月 4 日

  • 在 OpenAPI 架构生成中包含 API 版本,默认为空字符串。
  • 向 OpenAPI 响应架构中添加分页属性。
  • 向 OpenAPI 响应架构中添加缺少的“description”属性。
  • 在 OpenAPI 架构中仅在非空情况下包含“required”。
  • 修复 OpenAPI 模式中“DELETE”案例的响应模式。
  • 对列表视图响应模式使用数组类型。
  • 在 OpenAPI 操作 ID 中使用一致的 lowerInitialCamelCase 样式。
  • 修复 OpenAPI 模式中的 minLength/maxLength/minItems/maxItems 属性。
  • 为了提高性能,在序列化中仅调用 FileField.url 一次。
  • 修复在配置更改后节流计算可能出错的边缘情况。

3.10.2

日期:2019 年 7 月 29 日

  • 各种 OpenAPI 模式修复。
  • 能够在 include_docs_urls 中指定 urlconf。

3.10.1

日期:2019 年 7 月 17 日

  • 不要在 TokenAuth 管理员上包含自动完成字段,因为它强制对自定义用户模型和管理员进行约束。
  • 为 OpenAPI 模式生成需要 uritemplate,但不需要 coreapi

3.10.0

日期2019 年 7 月 15 日

  • 切换到 OpenAPI 模式生成。
  • 放弃 Python 2 支持。
  • 添加 generateschema --generator_class CLI 选项
  • 为 OpenAPI 模式生成更新 PyYaml 依赖项至 pyyaml>=5.1 #6680
  • 使用 markdown 解决弃用警告。 #6317
  • 在模板中使用 user.get_username,而不是 user.username
  • 修复在对象删除后可能发生的游标分页问题。
  • 修复具有 source="*" 的可空字段
  • 在节流检查期间始终应用所有节流类。
  • 更新 jQuery 和 Markdown 依赖项。
  • 不要严格禁止冗余 SerializerMethodField 字段名称参数。
  • 如果没有经过身份验证,请不要在可浏览 API 中呈现额外操作。
  • 从搜索参数中去除空字符。
  • 弃用 detail_route 装饰器,转而使用 action,它接受 detail 布尔值。改为使用 @action(detail=True)gh6687
  • 弃用 list_route 装饰器,转而使用 action,它接受 detail 布尔值。改为使用 @action(detail=False)gh6687

3.9.x 系列

3.9.4

日期:2019 年 5 月 10 日

这是一个维护版本,修复了 Python 2 下的一个错误处理 bug。

3.9.3

日期:2019 年 4 月 29 日

这是最后一个支持 Python 2 的 Django REST Framework 版本。务必在升级到 Django REST Framework 3.10 之前升级到 Python 3。

  • 调整 django-guardian 的兼容性检查,以允许与 Python 2 兼容的最后一个 guardian 版本 (v1.4.9)。 #6613

3.9.2

日期2019 年 3 月 3 日

  • 路由器:在 register() 上使 _urls 缓存无效 #6407
  • 延迟模式渲染器创建以避免需要 pyyaml。 #6416
  • 在 base.html 中添加了“request_forms”块 #6340
  • 修复了 SchemaView 以在发生异常时重置渲染器。 #6429
  • 更新 Django Guardian 依赖项。 #6430
  • 确保支持 Django 2.2 #6422#6455
  • 使模板与基于会话的 CSRF 兼容。 #6207
  • 调整字段 validators 以接受非列表可迭代对象。 #6282
  • 添加了 SearchFilter.get_search_fields() 钩子。 #6279
  • 修复通过集合访问 collections.abc 类时的弃用警告 #6268
  • 允许 Q 对象在 limit_choices_to 内省中。 #6472
  • 在复合权限中添加了惰性求值。 #6463
  • 在权限组合中添加了否定 ~ 运算符 #6361
  • 避免在 SearchFilter 中对注释字段调用 distinct。 #6240
  • 引入了 RemovedInDRF…Warning 类以简化弃用。 #6480

3.9.1

日期: 2019 年 1 月 16 日

  • 解决可浏览 API 中的 XSS 问题。 #6330
  • 将 Bootstrap 升级到 3.4.0 以解决 XSS 问题。
  • 解决可组合权限的问题。 #6299
  • 尊重外键上的 limit_choices_to#6371

3.9.0

日期: 2018 年 10 月 18 日

  • 改进 ViewSet 额外操作 #5605
  • 修复 ViewSet 后缀的 action 支持 #6081
  • 允许 action 文档部分 #6060
  • 弃用 Router.register base_name 参数,转而使用 basename#5990
  • 弃用 Router.get_default_base_name 方法,转而使用 Router.get_default_basename#5990
  • CharField 更改为不允许空字节。 #6073 要恢复到旧行为,请对 CharField 进行子类化,并将 ProhibitNullCharactersValidator 从验证器中删除。 python class NullableCharField(serializers.CharField): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.validators = [ v for v in self.validators if not isinstance(v, ProhibitNullCharactersValidator) ]
  • 添加 OpenAPIRenderergenerate_schema 管理命令。 #6229
  • 默认添加 OpenAPIRenderer,并添加架构文档。 #6233
  • 允许组合权限 #5753
  • 允许 Django 2.1 中的 nullable BooleanField #6183
  • 添加对 Python 3.7 支持的测试 #6141
  • 使用 Django 2.1 最终版本进行测试。 #6109
  • 将 djangorestframework-datatables 添加到第三方包 #5931
  • 将 ISO 8601 日期格式更改为排除仅年/月选项 #5936
  • 将所有 pypi.python.org URL 更新为 pypi.org #5942
  • 确保 html 表单(multipart 表单数据)尊重可选字段 #5927
  • 允许对 ErrorDetail 进行哈希处理。 #5932
  • 更正 JSONField 的架构解析 #5878
  • 使用 safe 渲染描述(来自 help_text) #5869
  • 从 deault_error_message 中删除输入值 #5881
  • 在 DurationField 中添加 min_value/max_value 支持 #5643
  • 修复仅 pk 优化 try/except 块中被覆盖的实例 #5747
  • 修复当值为空时 items 过滤器中的 AttributeError #5981
  • 修复 Javascript e.indexOf 不是函数错误 #5982
  • 修复额外操作的架构 #5992
  • 改进 get_error_detail 以使用 error_dict/error_list #5785
  • 改进 Admin 渲染器中的 URL #5988
  • 在文档中添加“社区”部分,进行小幅清理 #5993
  • 将 guardian 导入移出 compat #6054
  • 弃用 DjangoObjectPermissionsFilter 类,已移至 djangorestframework-guardian 包。 #6075
  • 放弃对 Django 1.10 的支持 #5657
  • 仅对对象查找捕获 TypeError/ValueError #6028
  • 在 ModelSerializer 中处理没有 .objects 管理器的模型。 #6111
  • 改进 ModelSerializer.create() 错误消息。 #6112
  • 修复使用 django 1.11.6+ 和会话认证时 CSRF cookie 检查失败的问题 #6113
  • 更新 JWT 文档。 #6138
  • 修复自动转义未传递给 urlize_quoted_links 过滤器 #6191

3.8.x 系列

3.8.2

日期2018 年 4 月 6 日

  • 修复 read_only + default unique_together 验证。 #5922
  • authtoken.views 从 rest_framework.compat 导入 coreapi,而不是直接导入。 #5921
  • 文档:为 Route 添加缺少的参数“detail” #5920

3.8.1

日期2018 年 4 月 4 日

  • 在路由装饰器中使用旧的 url_name 行为 #5915

    对于 list_routedetail_route,保持 url_name 的旧行为,将其基于 url_path 而不是函数名称。

3.8.0

日期2018 年 4 月 3 日

  • 重大更改:更改 read_only 加上 default 行为。 #5886

    read_only 字段现在始终从可写字段中排除。

    以前,带有 default 值的 read_only 字段会将 default 用于创建和更新操作。

    为了保持旧行为,您可能需要在视图中调用 save() 时传递 read_only 字段的值

    def perform_create(self, serializer):
        serializer.save(owner=self.request.user)
    

    或者,您可以根据需要覆盖序列化器上的 save()create()update()

  • 当 required=False 时更正 allow_null 行为 #5888

    如果没有显式的defaultallow_null表示传出序列化的默认值为null。以前,当只读或不需要时,此类字段会被跳过。

    如果您依赖于此类字段从传出表示中排除,则可能存在向后兼容性中断。为了恢复旧行为,您可以覆盖data以在None时排除该字段。

    例如

    @property
    def data(self):
        """
        Drop `maybe_none` field if None.
        """
        data = super().data
        if 'maybe_none' in data and data['maybe_none'] is None:
            del data['maybe_none']
        return data
    
  • 重构动态路由生成并改进视图集操作内省。 #5705

    ViewSet已提供新的属性和方法,使其能够内省其操作集和当前操作的详细信息。

    • list_routedetail_route合并到单个action装饰器中。
    • 使用.get_extra_actions()获取ViewSet上的所有额外操作。
    • 额外操作现在在已装饰的方法上设置url_nameurl_path
    • url_name现在基于函数名称,而不是url_path,因为该路径并不总是合适的(例如,在路径中捕获参数)。
    • 通过.reverse_action()方法启用操作 URL 反转(在 3.7.4 中添加)
    • 反转调用示例:self.reverse_action(self.custom_action.url_name)
    • 添加detail initkwarg 以指示当前操作是在集合还是单个实例上进行。

    其他更改

    • 弃用list_routedetail_route,转而使用带有detail布尔值的action装饰器。
    • 弃用动态列表/详细信息路由变体,转而使用带有detail布尔值的DynamicRoute
    • 重构路由器的动态路由生成。
    • list_routedetail_route保留url_name的旧行为,将其基于url_path而不是函数名称。
  • 修复 3.7.4 发行说明的格式 #5704

  • 文档:更新 DRF 可写嵌套序列化程序引用 #5711
  • 文档:修复身份验证 URL 示例中的错别字。 #5713
  • 改进复合字段子错误 #5655
  • 禁用字典/列表字段的 HTML 输入 #5702
  • 修复 HostNameVersioning 文档中的错别字 #5709
  • 使用 rsplit 获取导入的模块和类名 #5712
  • 规范 URLPatternsTestCase #5703
  • 添加异常转换测试 #5700
  • 测试 staticfiles #5701
  • 将 drf-yasg 添加到文档和架构第三方包 #5720
  • 删除未使用的 compat._resolve_model() #5733
  • 放弃对不受支持的 Python 3.2 的兼容性解决方法 #5734
  • 优先使用 iter(dict) 而非 iter(dict.keys()) #5736
  • python_requires 参数传递给 setuptools #5739
  • 从文档中删除未使用的链接 #5735
  • 在文档中优先使用 https 协议(如果可用) #5729
  • 添加 HStoreField、postgres 字段测试 #5654
  • 始终在文档中完全限定 ValidationError #5751
  • 从 ManualSchema 中删除不可达代码 #5766
  • 允许自定义 API 文档代码示例 #5752
  • 更新文档以使用 pip show #5757
  • 在模板中加载“static”而不是“staticfiles” #5773
  • 修复 fields 文档中的错别字 #5783
  • 在文档中引用“NamespaceVersioning”而不是“NamespacedVersioning” #5754
  • ErrorDetail:添加 __eq__/__ne____repr__ #5787
  • 替换文档中的 background-attachment: fixed #5777
  • 使 404 和 403 响应与 exceptions.APIException 输出一致 #5763
  • 对 API 文档的细微修复:架构 #5796
  • 修复 PrimaryKeyRelatedField 的架构生成 #5764
  • 在架构中将序列化器 DictField 表示为对象 #5765
  • 添加重新实现 ObtainAuthToken 的文档示例 #5802
  • 将架构添加到 ObtainAuthToken 视图 #5676
  • 修复请求表单数据处理 #5800
  • 修复 authtoken 视图导入 #5818
  • 更新 pytest、isort #5815 #5817 #5894
  • 修复非 ISO8601 日期时间的活动时区处理。 #5833
  • 当值是 0 时,使 TemplateHTMLRenderer 渲染 IntegerField 输入。 #5834
  • 更正教程说明中的端点 #5835
  • 将 Django Rest Framework 角色过滤器添加到第三方包 #5809
  • 使用静态资产的单个副本。更新 jQuery #5823
  • 将三元条件变为符合 PEP308 #5827
  • 添加指向“使用 React 的待办事项列表 API”和“博客 API”教程的链接 #5837
  • 修复 ModelSerializer 中的注释错误 #5844
  • 将 admin 添加到已安装的应用中以避免测试失败。 #5870
  • 修复 SimpleMetadata 中 UUIDField 的架构。 #5872
  • 更正有关路由器包含命名空间的文档。 #5843
  • 使用模型对象测试带点的源默认值 #5880
  • 允许遍历可为 null 的相关字段 #5849
  • 添加:教程:使用 React 的 Django REST(Django 2.0) #5891
  • 添加 LimitOffsetPagination.get_count 以允许方法覆盖 #5846
  • 元数据中不显示隐藏字段 #5854
  • 启用 OrderingFilter 来处理 'ordering' 字段的空元组(或列表)。#5899
  • 添加通用 500 和 400 JSON 错误处理程序。 #5904

3.7.x 系列

3.7.7

日期2017 年 12 月 21 日

  • 修复拼写错误以将 *.mo 语言环境文件包含到打包中。 #5697#5695

3.7.6

日期2017 年 12 月 21 日

  • 将缺失的 *.ico 图标文件添加到打包中。

3.7.5

日期2017 年 12 月 21 日

  • 将缺失的 *.woff2 字体文件添加到打包中。 #5692
  • 将缺失的 *.mo 语言环境文件添加到打包中。 #5695#5696

3.7.4

日期2017 年 12 月 20 日

  • 架构:提取用于 manual_fields 处理的方法 #5633

    允许更轻松地自定义 manual_fields 处理,例如为每个方法提供手动字段。AutoSchema 添加 get_manual_fields 作为预期覆盖点,以及一个实用方法 update_fields,用于处理列表中按名称替换字段,通常情况下,你不应覆盖该方法。

    注意:AutoSchema.__init__ 现在确保 manual_fields 是一个列表。以前可能在内部存储为 None

  • 移除 ulrparse 兼容性垫片;改为使用 six #5579

  • 删除 TimeDelta.total_seconds() 的兼容性包装器 #5577
  • 清理整个项目中的所有空格 #5578
  • 兼容性清理 #5581
  • 在可浏览的 API 视图中添加 pygments CSS 块 #5584 #5587
  • 从兼容性中移除 set_rollback() #5591
  • 修复请求正文/POST 访问 #5590
  • 重命名测试以引用正确的 issue #5610
  • 文档修复 #5611 #5612
  • 从文档和代码中移除对不受支持的 Django 版本的引用 #5602
  • 测试已声明字段的序列化器排除 #5599
  • 修复过滤器后端的模式生成 #5613
  • 对 ModelSerializer 测试进行小幅清理 #5598
  • 使用 __getattr__ 重新实现请求属性访问 #5617
  • 修复 SchemaJSRenderer 呈现无效 Javascript #5607
  • 使 Django 2.0 支持官方/明确 #5619
  • 对传递的请求参数执行类型检查 #5618
  • 修复隐藏在请求验证器中的 AttributeError #5600
  • 更新测试要求 #5626
  • 文档:Serializer._declared_fields 启用修改序列化器上的字段 #5629
  • 修复打包 #5624
  • 修复 PyPI 的自述文件呈现,将自述文件构建添加到 CI #5625
  • 更新教程 #5622
  • 具有 allow_null=True 的非必需字段不应暗示默认值 #5639
  • 文档:添加 allow_null 序列化输出注释 #5641
  • 更新在 tox.ini 中使用 Django 2.0 版本 #5645
  • 修复 Serializer.data,用于在提供无效 data 时呈现可浏览的 API #5646
  • 文档:注意 AutoSchema 对裸 APIView 的限制 #5649
  • 向 ViewSet 添加 .basename.reverse_action() #5648
  • 文档:修复序列化器文档中的错别字 #5652
  • 修复 override_settings 兼容性 #5668
  • 添加 DEFAULT_SCHEMA_CLASS 设置 #5658
  • 添加文档注释,重新生成 BooleanField 为 required=False #5665
  • 添加“dist”构建 #5656
  • 修复文档字符串中的错别字 #5678
  • 文档:添加 UNAUTHENTICATED_USER = None 注释 #5679
  • 从“记录您的 API”中更新 OPTIONS 示例 #5680
  • 文档:为 FBV 添加对象权限说明 #5681
  • 文档:为 to_representation 文档添加示例 #5682
  • 在文档中添加 Classy DRF 链接 #5683
  • 记录 ViewSet.action #5685
  • 修复架构文档中的拼写错误 #5687
  • 修复架构生成中的 URL 模式解析 #5689
  • 在自定义字段文档中添加使用 source=‘*’ 的示例。 #5688
  • 修复 Django 2 path() 路由中 format_suffix_patterns 行为 #5691

3.7.3

日期2017 年 11 月 6 日

  • 修复 contrib.auth 视图导入中的 AppRegistryNotReady 错误 #5567

3.7.2

日期2017 年 11 月 6 日

  • 由于移除了 django.contrib.auth.login()/logout() 视图,修复了 Django 2.1 兼容性。 #5510
  • 添加 TextLexer 的缺失导入。 #5512
  • 添加缓存的示例和文档 #5514
  • 包含架构生成中的日期和日期时间格式 #5511
  • 对 markdown 代码块使用三个反引号 #5513
  • 交互式文档 - 使底部侧边栏项目变为粘性 #5516
  • 澄清分页系统检查 #5524
  • 停止 JSONBoundField 篡改无效的 JSON #5527
  • 让 JSONField 在可浏览 API 中呈现为文本区域 #5530
  • 架构:为 ViewSet 操作排除 OPTIONS/HEAD #5532
  • 修复带点源的排序 #5533
  • 修复:allow_null=True 的字段应暗示默认序列化值 #5518
  • 确保 Location 标头严格为 'str',而不是子类。 #5544
  • 在 api-guide/parsers 中添加导入示例 #5547
  • 为“超出范围”的日期时间捕获溢出错误 #5546
  • 将 djangorestframework-rapidjson 添加到第三方包 #5549
  • 增加 drf_create_token 命令的测试覆盖率 #5550
  • 为 Python 3.6 支持添加 trove 分类器。 #5555
  • 向 Travis CI 配置添加 pip 缓存支持 #5556
  • 将 [wheel] 部分重命名为 [bdist_wheel],因为前者是旧版 #5557
  • 修复无效转义序列弃用警告 #5560
  • 添加交互式文档错误模板 #5548
  • 向 DecimalField 添加舍入参数 #5562
  • 修复在测试期间捕获的所有 BytesWarning #5561
  • 使用 dict 和 set 字面量,而不是调用 dict() 和 set() #5559
  • 更改 ImageField 验证模式,使用 DjangoImageField 的验证器 #5539
  • 修复 Python 2 中 query_string 中处理 Unicode 符号 #5552

3.7.1

日期2017 年 10 月 16 日

  • 修复交互式文档始终在请求中将布尔字段用作 false #5492
  • 提高与 Django 2.0 alpha 的兼容性。 #5500 #5503
  • 改进对架构命名冲突的处理 #5486
  • 围绕为点分 source 字段提供默认值添加其他文档和测试 #5489

3.7.0

日期2017 年 10 月 6 日

  • 修复 DjangoModelPermissions 以确保在调用视图的 get_queryset() 方法之前进行用户身份验证。作为副作用,这会更改 HTTP 方法权限和身份验证检查的顺序,并且仅在经过身份验证后才会返回 405 响应。如果您想复制旧行为,请参阅 PR 了解详细信息。 #5376
  • 弃用 APIViewapi_view 装饰器上的 exclude_from_schema。根据需要设置 schema = None@schema(None)#5422
  • 时区感知 DateTimeField 现在在序列化期间遵守活动或默认 timezone,而不是始终使用 UTC。 #5435

    解决不一致问题,其中实例使用提供的 create 日期时间序列化,但使用 retrieve 的 UTC。 #3732

    可能的向后兼容性中断,如果您依赖于日期时间字符串为 UTC。让客户端解释日期时间或 设置默认或活动时区(文档)为 UTC(如果需要)。

  • 根据弃用策略删除 DjangoFilterBackend 内联。改用 django_filters.rest_framework.FilterSet 和/或 django_filters.rest_framework.DjangoFilterBackend#5273

  • 编码时不要从 time 中删除微秒。使其与 datetime 一致。BC 更改:以前只编码毫秒。 #5440
  • 添加 STRICT_JSON 设置(默认 True)以引发 Python 的 json 模块接受的扩展浮点值(naninf-inf)的异常。BC 更改:以前这些值将转换为相应的字符串。将 STRICT_JSON 设置为 False 以恢复以前的行为。 #5265
  • 添加对 CursorPaginator 类中 page_size 参数的支持 #5250
  • 默认情况下使 DEFAULT_PAGINATION_CLASSNoneBC 更改:如果您只是设置 PAGE_SIZE 以启用分页,则需要添加 DEFAULT_PAGINATION_CLASS。以前的默认值为 rest_framework.pagination.PageNumberPagination。有一个系统检查警告来捕获这种情况。如果您正在逐视图设置分页类,则可以忽略该警告。 #5170
  • 在架构生成中从 get_serializer_fields 捕获 APIException#5443
  • 在使用 include_docs_urls 时允许自定义身份验证和权限类 #5448
  • 推迟验证器上的翻译字符串评估。 #5452
  • 为 'ValidationError' 异常中的 'detail' 参数添加默认值 #5342
  • 调整架构 get_filter_fields 规则以匹配框架 #5454
  • 更新测试矩阵以添加 Django 2.0 并删除 Django 1.8 和 1.9 BC 更改:这将从 Django REST Framework 支持的版本中删除 Django 1.8 和 Django 1.9。 #5457
  • 修复了 serializers.ModelField 中的弃用警告 #5058
  • get_queryset 返回 None 时添加更明确的错误消息 #5348
  • 修复 Response data 描述的文档 #5361
  • 修复打包时排除 pycache/.pyc #5373
  • 修复带点的源的默认值处理 #5375
  • 确保在将空主体传递给 RequestFactory 时设置 content_type #5351
  • 修复 ErrorDetail 文档 #5380
  • 允许在通用内容表单中使用可选内容 #5372
  • 更新 NullBooleanField 的受支持值 #5387
  • 修复带模型源的 ModelSerializer 自定义命名字段 #5388
  • 修复 MultipleFieldLookupMixin 文档示例以正确检查对象级别权限 #5398
  • 更新 permissions.md 中的 get_object() 示例 #5401
  • 修复 authtoken 管理命令 #5415
  • 修复架构生成 markdown #5421
  • 允许动态设置 ChoiceField.choices #5426
  • 将项目布局添加到快速入门 #5434
  • 在 'render_markdown' 模板标签中重复使用 'apply_markdown' 函数 #5469
  • 在文档中添加指向 drf-openapi 包的链接 #5470
  • 使用 pygments 添加文档字符串代码高亮 #5462
  • 修复名为 data 的视图的文档渲染 #5472
  • 文档:阐明 'to_internal_value()' 验证行为 #5466
  • 修复 APIException.str 上缺少的 six.text_type() 调用 #5476
  • 记录 documentation.py #5478
  • 修复架构生成中的命名冲突 #5464
  • 使用请求对象调用 Django 的 authenticate 函数 #5295
  • 将 coreapi JS 更新为 0.1.1 #5479
  • is_list_view 识别 RetrieveModel… 视图 #5480
  • 移除 Django 1.8 和 1.9 兼容性代码 #5481
  • 从 DefaultRouter 中移除已弃用的架构代码 #5482
  • 重构架构生成以允许按视图自定义。BC 更改SchemaGenerator.get_serializer_fields 已重构为 AutoSchema.get_serializer_fields 并删除了 view 参数 [#5354][gh5354]

3.6.x 系列

3.6.4

日期2017 年 8 月 21 日

  • 忽略 OrderingFilter 的任何无效查询参数。 #5131
  • 读取大型 JSON 请求时提高内存占用。 #5147
  • 修复分页的架构生成。 #5161
  • 修复当 HTML_CUTOFF 设置为 None 时的异常。 #5174
  • 修复可浏览 API 无法正确支持 multipart/form-data 的问题。 #5176
  • 修复 test_hyperlinked_related_lookup_url_encoded_exists#5179
  • 确保 max_length 在 FileField kwargs 中。 #5186
  • 修复 list_routedetail_route,其中 kwargs 在 url_path 中包含大括号 #5187
  • 添加 Django 管理命令以创建 DRF 用户令牌。 #5188
  • 确保 API 文档模板不检查用户身份验证 #5162
  • 修复 OneToOneField 也是主键的特殊情况。 #5192
  • 在 base.html 中添加 aria-label 和一个新的区域以提高可访问性 #5196
  • 在 api.js 中引用嵌套的 API 参数。 #5214
  • 在分派之前设置 ViewSet args/kwargs/request。 #5229
  • 为 SlugField 添加 Unicode 支持。 #5231
  • 修复 HiddenField 出现在原始数据表单的初始内容中。 #5259
  • 在无效时区解析时引发验证错误。 #5261
  • 修复 SearchFilter 的多对多行为/性能。 #5264
  • 简化链式比较并进行次要代码修复。 #5276
  • RemoteUserAuthentication、文档和测试。 #5306
  • 还原“缓存字段的根和上下文属性” #5313
  • 修复架构中列表字段的自省。 #5326
  • 修复交互式文档中的多个嵌套和额外方法。 #5334
  • 修复/删除未定义的模板变量“schema” #5346

3.6.3

日期: 2017 年 5 月 12 日

  • 如果 URL 查找导致 ValidationError,则引发 404。(#5126)
  • 在生成 API 架构时,尊重基于类的视图上的 http_method_names。(#5085)
  • 允许在 LimitOffsetPagination 中覆盖的 get_limit 返回所有记录。(#4437)
  • 修复 ListSerializer 的部分更新。(#4222)
  • 在可浏览的 API 中正确呈现 JSONField 控件。(#4999, #5042)
  • 引发给定时区中无效日期时间的验证错误。(#4987)
  • 支持将文档和架构快捷方式限制为 URL 的子集。(#4979)
  • 解决 SchemaGenerator 错误,该错误与没有 page_size 属性的分页器有关。(#5086, #3692)
  • 解决 HyperlinkedRelatedField 异常,该异常使用 %20 而不是空格的字符串。(#4748, #5078)
  • 可自定义的架构生成器类。(#5082)
  • 更新响应中的现有 vary 标头,而不是覆盖它们。(#5047)
  • 支持将 .as_view() 传递给视图实例。(#5053)
  • 在视图上覆盖设置时使用正确的异常处理程序。(#5055, #5054)
  • 更新布尔字段以支持“是”和“否”值。(#5038)
  • 修复 ChoiceField 的唯一验证器。(#5004, #5026, #5028)
  • API 文档中的 JavaScript 清理。(#5001)
  • 在 API 架构中包含 URL 路径正则表达式(如果有效)。(#5014)
  • 在 coreapi TokenAuthentication 中正确设置架构。(#5000, #4994)
  • ViewSets 上的 HEAD 请求不应返回 405。(#4705, #4973, #4864)
  • 支持在 extra_kwargs 中使用“source”。(#4688)
  • 修复 schema.js 的无效内容类型 (#4968)
  • 修复 DjangoFilterBackend 继承问题。(#5089, #5117)

3.6.2

日期: 2017 年 3 月 10 日

  • 支持 API 文档中的 Safari 和 IE。(#4959, #4961)
  • 在 API 文档模板标签中添加缺失的 mark_safe。(#4952, #4953)
  • 添加缺失的 glyphicon 字体。(#4950, #4951)
  • 修复 API 文档中的单对单字段。(#4955, #4956)
  • 测试清理。(#4949)

3.6.1

日期: 2017 年 3 月 9 日

  • 确保 markdown 依赖项为可选。(#4947)

3.6.0

日期: 2017 年 3 月 9 日

请参阅 发布公告


3.5.x 系列

3.5.4

日期: 2017 年 2 月 10 日

  • 为 ListField 添加 max_length 和 min_length 参数。(#4877)
  • 添加针对每个视图的自定义异常处理程序支持。(#4753)
  • 支持在序列化器子类中禁用声明的字段。(#4764)
  • 支持在 @list_route@detail_route 端点上使用自定义视图名称。(#4821)
  • 在使用自定义用户模型时更正登录模板中字段的标签。(#4841)
  • 修复从文档字符串中生成的描述中的空白。(#4759#4869#4870
  • 当视图在没有模式渲染器的情况下返回模式时,改进错误报告。(#4790
  • 修复当使用 prefetch_relatedPUT 请求返回的响应。(#4661#4668
  • 修复面包屑视图名称。(#4750
  • 修复 RequestsClient 确保 URL 完全限定。(#4678
  • 修复在某些情况下可写嵌套字段检查的不正确行为。(#4634#4669
  • 解决 Django 弃用警告。(#4712
  • 清理各种测试用例。

3.5.3

日期2016 年 11 月 7 日

  • 不引发不正确的 FilterSet 弃用警告。(#4660#4643#4644
  • 当视图权限类引发 404 时,模式生成不应引发 404。(#4645#4646
  • 为输入控件添加 autofocus 支持。(#4650

3.5.2

日期2016 年 11 月 1 日

  • 在 Python 2.7 中恢复异常回溯。(#4631#4638
  • 在管理控制台中正确显示字典。(#4532#4636
  • 使用可变参数和关键字参数修复 is_simple_callable。(#4622#4602
  • 使用 BooleanField 支持“on”/“off”文字。(#4640#4624
  • 启用值查询集的游标分页。(#4569
  • 修复 Throttled 异常的 get_full_details() 支持。(#4627
  • 修复 FilterSet 代理。(#4620
  • 使序列化器字段导入显式。(#4628
  • 删除冗余请求适配器。(#4639

3.5.1

日期2016 年 10 月 21 日

  • 进行 rest_framework/compat.py 导入。(#4612#4608#4601
  • 修复模式基本路径生成中的错误。(#4611#4605
  • 修复 ListSerializer 具有单个项目时的损坏案例。(#4609#4606
  • 为 Python 3.5 兼容性删除裸 raise。(#4600

3.5.0

日期2016 年 10 月 20 日


3.4.x 系列

3.4.7

日期2016 年 9 月 21 日

  • 当已访问 request.POST 时,请求解析的回退行为。(#3951#4500
  • 修复 RegexField 的回归。(#4489#4490#2617
  • admin.html 中缺少逗号导致 CSRF 错误。(#4472#4473
  • 修复具有空上下文的响应渲染。(#4495
  • 修复 API 列表中的缩进回归。(#4493
  • 修复了将不正确的值设置为 api_view 装饰视图的 ResolverMatch.func_name 的问题。(#4465#4462
  • 当路径包含 unicode 参数时,修复 APIClient.get()#4458

3.4.6

日期2016 年 8 月 23 日

  • 修复可浏览 API 中格式错误的 Javascript。(#4435
  • 从模式字段中跳过 HiddenField。(#4425#4429
  • 改进 Create 以显示原始异常回溯。(#3508
  • 修复 AdminRenderer 仅显示 PK 相关字段。(#4419#4423

3.4.5

日期2016 年 8 月 19 日

  • 改进调试错误处理。(#4416#4409
  • 允许自定义 CSRF_HEADER_NAME 设置。(#4415#4410
  • 在生成架构时,在视图集中包含 .action 属性。(#4408#4398
  • 不要在 request.POST 中包含 request.FILES 项。(#4407
  • 修复多选框的渲染。(#4403
  • 修复 Field.get_default 的文档字符串。(#4404
  • 在 README 中用 ASCII 字符替换 utf8 字符。(#4412

3.4.4

日期2016 年 8 月 12 日

  • 确保在生成架构时视图已完全初始化。(#4373#4382#4383#4279#4278
  • 向架构中添加表单字段说明。(#4387
  • 修复架构端点的类别生成。(#4391#4394#4390#4386#4376#4329
  • 分页时不要去除空查询参数。(#4392#4393#4260
  • 使用 LimitOffsetPagination 时,不要为结果为空重新运行查询。(#4201#4388
  • 严格的 CharField 类型验证。(#4380#3394
  • RelatedField.choices 应保留非字符串值。(#4111#4379#3365
  • 垂直表单样式中复选框的渲染测试用例。(#4378#3868#3868
  • 在可浏览的 API 中显示错误回溯 HTML(#4042#4172
  • 修复 ALLOWED_VERSIONS 和 no DEFAULT_VERSION 的处理。(#4370
  • 允许 DecimalField 中的 max_digits=None。(#4377#4372
  • 渲染关系选择时限制查询集。(#4375#4122#3329#3330#3877
  • 使用 ChoiceField、MultipleChoiceField 和非字符串选择解决表单显示。(#4374#4119#4121#4137#4120
  • 修复对 TemplateHTMLRenderer.resolve_context() 备用方法的调用。(#4371

3.4.3

日期2016 年 8 月 5 日

  • 包含旧版 TemplateHTMLRenderer 内部 API 用户的备用方案。(#4361

3.4.2

日期2016 年 8 月 5 日

  • 生成模式时包含传递给 'as_view' 的 kwargs。(#4359#4330#4331
  • 在 Django 1.10+ 中,将 request.user.is_authenticated 作为属性而不是方法进行访问。(#4358#4354
  • 从模式中过滤 HEAD。(#4357
  • extra_kwargs 优先于 uniqueness kwargs。(#4198#4199#4349
  • 在代码缩进中使用制表符时更正说明。(#4345#4347
  • 更改 TemplateHTMLRenderer 中的模板上下文生成。(#4236
  • 部分更新中不应包含序列化器默认值。(#4346#3565
  • 当不包含文件名时,FileUploadParser 的行为一致且错误描述性。(#4340#3610#4292#4296
  • DecimalField 量化传入数字。(#4339#4318
  • 处理 IP 字段的非字符串输入。(#4335#4336#4338
  • 当架构生成包含根 URL 时,修复前导斜杠处理。(#4332
  • 具有 allow_null 选项的 DictField 的测试用例。(#4348
  • 将 Django 1.10 测试版更新为 Django 1.10。(#4344

3.4.1

日期2016 年 7 月 28 日

  • DefaultRouter 添加 root_renderers 参数。(#4323#4268
  • 添加 urlschema_url 参数。(#4321#4308#4305
  • 唯一一起检查应适用于具有默认值的只读字段。(#4316#4294
  • 在架构生成器中设置 view.format_kwarg。(#4293#4315
  • 修复具有 pagination_class = None 的视图的架构生成器。(#4314#4289
  • 修复没有 get_serializer_class 的视图的架构生成器。(#4265#4285
  • 修复 AcceptContent-Type 头中的媒体类型参数。(#4287#4313#4281
  • 在错误消息中使用 verbose_name 而不是 object_name。(#4299
  • Twitter Bootstrap 的次要版本更新。(#4307
  • 使用相关字段时,SearchFilter 会引发错误。(#4302, #4303, #4298)
  • 添加对 RFC 4918 状态代码的支持。(#4291)
  • 将 LICENSE.md 添加到构建的 wheel 中。(#4270)
  • 自 3.4 起,序列化“复杂”字段会返回 None,而不是值 (#4272, #4273, #4288)

3.4.0

日期: 2016 年 7 月 14 日

  • 不要在 JSON 输出中删除微秒。(#4256)
  • 两个略有不同的 iso 8601 日期时间序列化。(#4255)
  • 解决媒体类型参数包含不正确的问题。(#4254)
  • 响应 Content-Type 可能格式错误。(#4253)
  • 修复某些平台上的 setup.py 错误。(#4246)
  • 将 coreapi 中的备用格式移到单独的包中。(#4244)
  • 将 localize 关键字参数添加到 DecimalField。(#4233)
  • 修复自定义列表路由和详细路由的路由器问题。(#4229)
  • 嵌套命名空间的命名空间版本控制。(#4219)
  • 稳健的唯一性检查。(#4217)
  • must_call_distinct 进行轻微重构。(#4215)
  • CursorPagination 中可覆盖的偏移量截止点。(#4212)
  • 使用日期/时间字段原样传递字符串。(#4196)
  • 添加测试以确认 required=False 在关系字段上有效。(#4195)
  • 在 LimitOffsetPagination 中,limit=0 应恢复为默认限制。(#4194)
  • 从 unique_together 验证中排除 read_only=True 字段并添加文档。(#4192)
  • 处理 JSON 中的字节串。(#4191)
  • JSONField(binary=True) 使用二进制字符串表示,而 JSONRenderer 不支持。(#4187)
  • JSONField(binary=True) 使用二进制字符串表示,而 JSONRenderer 不支持。(#4185)
  • 在可浏览的 API 中进行更稳健的表单渲染。(#4181)
  • .validated_data.errors 的空情况作为 ListSerializer 的列表而不是字典。(#4180)
  • 模式和客户端库。(#4179)
  • 删除了 AUTH_USER_MODEL 兼容性属性。(#4176)
  • 清理现有的弃用警告。(#4166)
  • 支持 Django 1.10。(#4158)
  • 将 jQuery 版本更新至 1.12.4。(#4157)
  • OrderingFilter 中更健壮的默认行为。(#4156)
  • 删除 description.py 代码和测试。(#4153)
  • 将 guardian.VERSION 封装在元组中。(#4149)
  • 完善具有 kwargs 的字段的验证器。(#4146)
  • 修复 ListField、DictField 子项中的 None 值表示。(#4118)
  • 解决 TimeField 表示午夜值的问题。(#4107)
  • 在 POST/DELETE 请求重定向后为 AdminRenderer 设置正确的状态代码。(#4106)
  • TimeField 渲染返回 None 而不是 00:00:00。(#4105)
  • 修复错误命名的 zh-hans 和 zh-hant 语言环境路径。(#4103)
  • 当限制为 0 时防止引发异常。(#4098)
  • TokenAuthentication:允许在标头中使用自定义关键字。(#4097)
  • 处理填充不正确的 HTTP 基本身份验证标头。(#4090)
  • 当 limit=0 时,LimitOffset 分页使可浏览 API 崩溃。(#4079)
  • 修复 DecimalField 任意精度支持。(#4075)
  • 添加对自定义 CSRF cookie 名称的支持。(#4049)
  • 修复 #4035 引入的回归。(#4041)
  • 没有权限的 auth 视图失败应引发 403。(#4040)
  • 修复 string_types/text_types 混淆。(#4025)
  • 不要在 OPTIONS 请求中列出相关字段选项。(#4021)
  • 修复拼写错误。(#4008)
  • 重新排序视图初始化。(#4006)
  • Python 3.4 中的 DjangoObjectPermissionsFilter 中的类型错误。(#4005
  • 修复了已弃用的 Query.aggregates 的使用。(#4003
  • 修复了文档字符串周围的空行。(#4002
  • 修复了当限制为 0 时管理分页。(#3990
  • OrderingFilter 调整。(#3983
  • 非必需的序列化器相关字段。(#3976
  • 在教程中使用更安全的 "@api_view" 调用方式。(#3971
  • ListSerializer 不处理 unique_together 约束。(#3970
  • 添加缺失的迁移文件。(#3968
  • OrderingFilter 应调用 get_serializer_class() 以确定默认字段。(#3964
  • 从测试和兼容性中删除旧的 Django 检查。(#3953
  • 支持可调用作为任何 serializer.Fieldinitial 的值。(#3943
  • 防止在 SearchFilter 中进行不必要的 distinct() 调用。(#3938
  • 修复 None UUID 外键序列化。(#3936
  • 删除 EOL Django 1.7。(#3933
  • 在序列化器错误消息中添加缺失的空格。(#3926
  • 修复了 _force_text_recursive 拼写错误。(#3908
  • 尝试解决与 field.rel 相关的 Django 2.0 弃用警告。(#3906
  • 修复使用嵌套序列化器和列表解析 multipart 数据。(#3820
  • 将 API URL 解析到不同的命名空间。(#3816
  • 不要在可浏览 API 表单中 HTML 转义 help_text。(#3812
  • OPTIONS 提取并显示 choices 字段中所有可能的外部键。(#3751
  • Django 1.9 弃用警告 (#3729)
  • #3598 的测试用例 (#3710)
  • 添加对搜索过滤器多个值的支持。(#3541
  • 在排序过滤器中使用 get_serializer_class。(#3487
  • 具有 many=True 的序列化器应返回空列表,而不是空字典。(#3476
  • LimitOffsetPagination limit=0 修复。(#3444
  • 启用验证器以延迟字符串评估并处理新的字符串格式。(#3438
  • 如果字段无效,则执行唯一验证器并中断。(#3381
  • 不要在面包屑中忽略重写的 View.get_view_name()。(#3273
  • 使用序列化器进行呈现失败时重试表单呈现。(#3164
  • 唯一约束阻止嵌套序列化器更新。(#2996
  • 不应为排除的(只读)字段运行唯一性验证器。(#2848
  • UniqueValidator 为嵌套对象引发异常。(#2403
  • lookup_type 已弃用,建议使用 lookup_expr。(#4259

3.3.x 系列

3.3.3

日期2016 年 3 月 14 日

  • 从模板中删除版本字符串。感谢 @blag 提供报告和修复。(#3878#3913#3912
  • 修复 BooleanField 的垂直 html 布局。感谢 Mikalai Radchuk 提供修复。(#3910
  • 在 Django 1.8 中取消弃用警告。感谢 Simon Charette 提供修复。(#3903
  • 对 authtoken 进行国际化。感谢 Michael Nacharov 提供修复。(#3887#3968
  • 在未声明 authtoken 应用程序时将 Token 模型修复为 abstract。感谢 Adam Thomas 提供报告。(#3860#3858
  • 提高 Markdown 版本兼容性。感谢 Michael J. Schultz 提供修复。(#3604#3842
  • QueryParameterVersioning 不使用 DEFAULT_VERSION 设置。感谢 Brad Montgomery 的修复。(#3833
  • 在模型中添加显式的 on_delete。感谢 Mads Jensen 的修复。(#3832
  • 修复 DateField.to_representation 以使用 Python 2 unicode。感谢 Mikalai Radchuk 的修复。(#3819
  • 修复 TimeField 不处理字符串时间。感谢 Areski Belaid 的修复。(#3809
  • 避免更新 Meta.extra_kwargs。感谢 Kevin Massey 的报告和修复。(#3805#3804
  • 修复嵌套验证错误的错误呈现。感谢 Craig de Stigter 的修复。(#3801
  • 记录如何避免 django-crispy-forms 中的 CSRF 和缺少按钮的问题。感谢 Emmanuelle Delescolle、José Padilla 和 Luis San Pablo 的报告、分析和修复。(#3787#3636#3637
  • 改善 Rest Framework 设置文件的设置时间。感谢 Miles Hutson 的报告和 Mads Jensen 的修复。(#3786#3815
  • 改善 authtoken 与 Django 1.9 的兼容性。感谢 S. Andrew Sheppard 的修复。(#3785
  • 修复从模型的 DecimalField 传输 Min/MaxValueValidator。感谢 Kevin Brown 的修复。(#3774
  • 改善可浏览 API 中的 HTML 标题。感谢 Mike Lissner 的报告和修复。(#3769
  • 修复 AutoFilterSet 以继承自 default_filter_set。感谢 Tom Linford 的修复。(#3753
  • 修复 transifex 配置以处理新的中文语言代码。感谢 @nypisces 的报告和修复。(#3739
  • DateTimeField 未正确处理空值。感谢 Mick Parker 的报告和修复。(#3731#3726
  • 设置已移除的 rest_framework 设置时引发错误。感谢 Luis San Pablo 的修复。(#3715
  • 在 AdminRenderer post 表单中添加缺失的 csrf_token。感谢 Piotr Śniegowski 的修复。(#3703
  • 重构 _get_reverse_relationships() 以使用正确的 to_field。感谢 Benjamin Phillips 的修复。(#3696
  • 记录 RelatedFieldget_queryset 的用法。感谢 Ryan Hiebert 的修复。(#3605
  • 修复 HyperlinkRelatedField.get_url 中的空 pk 检测。感谢 @jslang 的修复 (#3962)

3.3.2

日期2015 年 12 月 14 日

  • ListField 强制输入为列表。(#3513
  • 修复隐藏原始数据表单的回归。(#3600#3578
  • 修复 Python 3.5 兼容性。(#3534#3626
  • 允许在 pagination.PageNumberPagination 中设置自定义 Django 分页器。(#3631#3684
  • 修复没有 to_fields 属性的关系字段。(#3635#3634
  • 修复 Django 1.9 的 template.render 弃用警告。(#3654
  • 对可浏览 API 渲染器中的响应标头进行排序。(#3655
  • 对 Django 1.9+ 使用 related_objects api。(#3656#3252
  • 删除时添加确认模态框。(#3228#3662
  • 在调用 has_[object_]permissions 时揭示以前隐藏的 AttributeErrors 和 TypeErrors。(#3668
  • 使 DRF 与 Django 1.8 中的多模板引擎兼容。(#3672
  • 更新 NestedBoundField 以在渲染其表单时也处理空字符串。(#3677
  • 修复 UUID 验证以正确捕获无效输入类型。(#3687#3679
  • 修复缓存问题。(#3628#3701
  • 修复没有 filter_class 的视图的 Admin 和 API 浏览器。(#3705#3596#3597
  • 向 rest_framework.urls 添加 app_name。(#3714
  • 改进 authtoken 的视图以支持 URL 版本控制。(#3718#3723

3.3.1

日期2015 年 11 月 4 日

  • 解决访问 request.POST 时解析错误的问题。(#3592
  • 正确处理引用主键的 to_field。(#3593
  • 允许在未定义 filter_class 时呈现筛选器 HTML。(#3560
  • 修复管理渲染问题。(#3564#3556
  • 修复 DecimalValidator 的问题。(#3568

3.3.0

日期2015 年 10 月 28 日

  • 筛选器的 HTML 控件。(#3315
  • 表单 API。(#3475
  • AJAX 可浏览 API。(#3410
  • 添加 JSONField。(#3454
  • 创建 ModelSerializer 关系字段时正确映射 to_field。(#3526
  • 将关键字参数包含在将 FilePathField 映射到序列化字段时。(#3536
  • ModelSerializer 唯一性约束上映射适当的模型 error_messages。(#3435
  • 为从 TextField 映射的 ModelSerializer 字段包含 max_length 约束。(#3509
  • 添加对 Django 1.9 的支持。(#3450#3525
  • 删除对 Django 1.5 和 1.6 的支持。(#3421#3429
  • 删除“south”迁移。(#3495

3.2.x 系列

3.2.5

日期2015 年 10 月 27 日

  • 在可选注销标签中转义 username。(#3550

3.2.4

日期2015 年 9 月 21 日

  • ViewSet.search_fields 属性不存在时不要报错。(#3324#3323
  • 修复 allow_emptymany=True 的序列化程序中不起作用。(#3361#3364
  • DurationField 接受整数。(#3359
  • 多级字典在 multipart 请求中不受支持。(#3314
  • 修复 HTTP PATCH 上的 ListField 截断 (#3415#2761)

3.2.3

日期2015 年 8 月 24 日

  • 添加 html_cutoffhtml_cutoff_text 以限制选择下拉列表。(#3313
  • SearchFilter 添加正则表达式样式。(#3316
  • 解决设置空白 HTML 字段时的问题。(#3318)(#3321
  • 在可浏览的 API 表单中正确显示现有的“多选”值。(#3290
  • 解决 IPAddressField 的重复验证消息。([#3249gh3249) (#3250
  • 修复当禁用分页时确保 admin 渲染器继续工作。(#3275
  • 解决 LimitOffsetPagination 在 count=0、offset=0 时出现错误。(#3303

3.2.2

日期2015 年 8 月 13 日

  • 添加 display_value() 方法,用于在显示关系字段选择输入时使用。(#3254
  • 修复 BooleanField 复选框错误地显示为已选中的问题。(#3258
  • 确保空复选框在所有情况下都正确将 BooleanField 设置为 False。(#2776
  • 允许 WSGIRequest.FILES 属性而不引发不正确的已弃用错误。(#3261
  • 解决在表单中呈现嵌套序列化程序的问题。(#3260
  • 如果用户意外地将序列化程序实例传递给响应而不是数据,则引发错误。(#3241

3.2.1

日期2015 年 8 月 7 日

  • 修复关系选择小部件在没有任何选项的情况下呈现的问题。(#3237
  • 修复 10 在管理界面中呈现为 truefalse 的问题。(#3227
  • 修复 HTML 表单输入中具有单个值的 ListFields 的问题。(#3238
  • 允许 request.FILES 与 Django 的 HTTPRequest 类兼容。(#3239

3.2.0

日期2015 年 8 月 6 日

  • 添加 AdminRenderer。(#2926
  • 添加 FilePathField。(#1854
  • ListField 添加 allow_empty。(#2250
  • 支持 django-guardian 1.3。(#3165
  • 支持分组选项。(#3225
  • 支持可浏览 API 中的错误表单。(#3024
  • 允许权限类自定义错误消息。(#2539
  • 支持超链接字段上的 source=<method>。(#2690
  • ListField(allow_null=True) 现在允许 null 作为列表值,而不是列表中的 null 项。(#2766
  • ManyToMany() 映射到 allow_empty=FalseManyToMany(blank=True) 映射到 allow_empty=True。(#2804
  • 支持主键字段的自定义序列化样式。(#2789
  • OPTIONS 请求支持嵌套表示。(#2915
  • 为具有 OPTIONS 请求的视图集设置 view.action == "metadata"。(#3115
  • 支持 UUIDField 上的 allow_blank。([#3130][gh#3130])
  • 不要在 401 或 403 响应代码中显示视图文档字符串。(#3216
  • 解决 Django 1.8 弃用警告。(#2886
  • 修复 DecimalField 验证。(#3139
  • 当与 trim_whitespace=True 一起使用时,修复 allow_blank=False 的行为。(#2712)
  • 修复某些字段组合错误映射到无效 allow_blank 参数的问题。(#3011)
  • 修复带有预取和修改查询集的输出表示。(#2704, #2727)
  • 当为 CursorPagination 提供某些无效查询参数时,修复断言错误。(#2920)gh2920
  • TokenAuthentication 中包含无效字符时,修复 UnicodeDecodeError。(#2928)
  • 使用 @non_atomic_requests 装饰器修复事务回滚。(#3016)
  • 使用 SearchFilter 修复 Oracle 数据库中的重复结果问题。(#2935)
  • 修复可浏览 API 表单中的复选框对齐和渲染。(#2783)
  • 修复未保存的文件对象,该对象应在表示中使用 "url": null。(#2759)
  • 修复可浏览 API 中的字段值渲染。(#2416)
  • 修复 HStoreField,使其在 DictField 映射中包含 allow_blank=True。(#2659)
  • 其他众多清理、错误消息改进、私有 API 和次要修复。

3.1.x 系列

3.1.3

日期2015 年 6 月 4 日

  • 添加 DurationField。(#2481, #2989)
  • UUIDField 添加 format 参数。(#2788, #3000)
  • 使用 multipart/form-data 对 MultipleChoiceField 进行部分更新时,该字段错误地清空(#2993, #2894)
  • 修复与只读 RelatedField 相关的选项中的错误。(#2981, #2811)
  • 修复嵌套序列化器与 unique_together 关系。(#2975
  • 允许 ChoiceField/MultipleChoiceField 表示形式的意外值。(#2839#2940
  • 如果设置了 ATOMIC_REQUESTS,则在出错时回滚事务。(#2887#2034
  • 无论其是否为 None,都设置视图上的操作,以覆盖方法。(#2933
  • DecimalField 接受 2E+2 作为 200,并正确验证小数位。(#2948#2947
  • 支持使用更改 username 的自定义 UserModel 进行基本身份验证。(#2952
  • IPAddressField 改进。(#2747#2618#3008
  • 改进 DecimalField 以便更轻松地进行子类化。(#2695

3.1.2

日期2015 年 5 月 13 日

  • DateField.to_representation 可以处理 str 和空值。(#2656#2687#2869
  • 使用 HTTP 标准中的默认原因短语。(#2764#2763
  • ModelSerializer 与抽象模型一起使用时引发错误。(#2757#2630
  • 处理 HyperLinkedRelatedField 中非 API view_name 的反转(#2724#2711
  • 不要严格要求相关字段的 pk。(#2745#2754
  • 元数据检测到 null 布尔字段类型。(#2762
  • 正确处理嵌套序列化器中的深度。(#2798
  • 显示没有分页器的视图集。(#2807
  • 不要在权限中检查已弃用的 .model 属性(#2818
  • 将整数字段限制为整数和字符串。(#2835#2836
  • 改进 IntegerField 以使用编译的十进制正则表达式。(#2853
  • 防止空 queryset 引发 AssertionError。(#2862
  • DjangoModelPermissions 依赖于 get_queryset。(#2863
  • 在内容协商中检查 AcceptHeaderVersioning。(#2868
  • 允许 DjangoObjectPermissions 使用定义 get_queryset 的视图。(#2905

3.1.1

日期2015 年 3 月 23 日

  • 安全修复:在可浏览 API 中转义 tab 切换 cookie 名称。
  • 如果使用了 serializer_class,即使视图中不存在 get_serializer 方法,也显示可浏览 API 中的输入表单。(#2743
  • 为 AuthTokenSerializer 使用密码输入。(#2741
  • 修复下一个按钮后缺少锚点关闭标签。(#2691
  • 修复视图集中 lookup_url_kwarg 的处理。(#2685#2591
  • 修复在 apps.py 中导入 rest_framework.views 的问题(#2678
  • 如果未设置 PAGE_SIZE,则 LimitOffsetPagination 会引发 TypeError#2667#2700
  • min_value 字段错误消息的德语翻译引用了 max_value。(#2645
  • 删除 MergeDict。(#2640
  • 支持使用相关字段序列化未保存的模型。(#2637#2641
  • 允许在 radio.html 选择中留空/为 null。(#2631

3.1.0

日期2015 年 3 月 5 日

有关详细信息,请参阅 3.1 发布公告


3.0.x 系列

3.0.5

日期2015 年 2 月 10 日

  • 修复一个 bug,其中 _closable_objects 会破坏 pickle。(#1850, #2492)
  • 允许使用 Throttling 的非标准 User 模型。(#2524)
  • 在 TokenAuthentication 迁移中支持自定义 User.db_table。(#2479)
  • 修复 Request 对象上具有误导性的 AttributeError 回溯。(#2530, #2108)
  • ManyRelatedField.get_value 在部分更新时清除字段。(#2475)
  • 从代码中删除了 '.model' 快捷方式。(#2486)
  • 修复 detail_routelist_route 可变参数。(#2518)
  • TokenAuthentication 中获取令牌时预取用户对象。(#2519)

3.0.4

日期: 2015 年 1 月 28 日

  • 支持 Django 1.8a1。(#2425, #2446, #2441)
  • 添加 DictField 并支持 Django 1.8 HStoreField。(#2451, #2106)
  • 添加 UUIDField 并支持 Django 1.8 UUIDField。(#2448, #2433, #2432)
  • BaseRenderer.render 现在会引发 NotImplementedError。(#2434)
  • 修复 Python 2.6 上的 timedelta JSON 序列化。(#2430)
  • ResultDictResultList 现在显示为标准字典/列表。(#2421)
  • 修复 Web 可浏览 API 页面 HTML 表单中的可见 HiddenField。(#2410)
  • RelatedField.choices 使用 OrderedDict。(#2408)
  • 使用 HTTP_X_FORWARDED_FOR 时修复标识格式。(#2401)
  • 使用限制时修复 memcached 中的无效键。(#2400)
  • 修复 3.x 版本中的 FileUploadParser。(#2399)
  • 修复序列化器继承。(#2388)
  • 使用 ReturnDict 修复缓存问题。(#2360

3.0.3

日期2015 年 1 月 8 日

  • 修复 models.DateField 上的 MinValueValidator。(#2369
  • 修复使用分页时序列化程序缺少上下文。(#2355
  • DefaultRouter 现在支持命名空间路由 URL。(#2351
  • required=False 允许输出时省略值。(#2342
  • models.TextField 使用 textarea 输入。(#2340
  • 如果需要,为分页使用自定义 ListSerializer。(#2331#2327
  • 空 HTML 字段的 null 和 '' 行为更佳。(#2330
  • 确保 exclude 中的字段为模型字段。(#2319
  • 修复 IntegerFieldmax_length 参数不兼容。(#2317
  • 修复 3.0 序列化程序的 YAML 编码器。(#2315#2283
  • 修复空 HTML 字段的行为。(#2311#1101
  • 修复元类属性深度忽略字段属性。(#2287
  • 修复 format_suffix_patterns 以配合 Django 的 i18n_patterns。(#2278
  • 使用 url_path 自定义自定义操作的路由 URL 的能力。(#2010
  • 不将 Django REST Framework 安装为 egg。(#2386

3.0.2

日期2014 年 12 月 17 日

  • 确保 request.user 可用于响应中间件。(#2155
  • Client.logout() 还会取消任何现有的 force_authenticate。(#2218#2259
  • 额外的断言和更好的检查以防止不正确的序列化器 API 使用。(#2228#2234#2262#2263#2266#2267#2289#2291
  • 修复了 CharFieldmin_length 消息。(#2255
  • 修复了 UnicodeDecodeError,它可能发生在序列化器 repr 中。(#2270#2279
  • 修复了在提供默认值时为空的 HTML 值。(#2280#2294
  • 修复了当 SlugRelatedField 用作多选输入时引发 UnicodeEncodeError。(#2290

3.0.1

日期2014 年 12 月 11 日

  • 当默认序列化器 create() 失败时,更友好的错误消息。(#2013
  • 当尝试保存序列化器且数据无效时引发错误。(#2098
  • 修复了 FileUploadParser 在文件名为空且有多个上传处理程序时中断。(#2109
  • 改进了 BindingDict 以支持标准 dict 函数。(#2135#2163
  • ListSerializer 添加了 validate()。(#2168#2225#2232
  • 修复了 JSONP 渲染器未能转义某些字符。(#2169#2195
  • 添加了 FileField 缺少的默认样式。(#2172
  • 调用 ViewSet.as_view() 时需要操作。(#2175
  • ChoiceField 添加了 allow_blank。(#2184#2239
  • HTML 渲染器中的外观修复。(#2187
  • 如果序列化器上的 fields 不是字符串列表,则引发错误。(#2193#2213
  • 改进了对嵌套创建和更新的检查。(#2194#2196
  • Serializer create()/update() 中的 validated_attrs 参数已重命名为 validated_data。(#2197
  • 删除弃用的代码以反映已删除的 Django 版本。(#2200
  • 嵌套写入的序列化程序错误更佳。(#2202#2215
  • 修复分页和自定义权限不兼容的问题。(#2205
  • 如果序列化程序上的 fields 不是字符串列表,则引发错误。(#2213
  • 添加关系字段的缺失翻译标记。(#2231
  • 改进字典/映射的字段查找行为。(#2244#2243
  • 优化超链接 PK。(#2242

3.0.0

日期:2014 年 12 月 1 日

有关详细信息,请参阅 3.0 发布公告


对于较旧的版本说明,请参阅 2.x 版本文档