Release Notes

发行说明 (Release Notes)

尽早发布,经常发布 — Eric S. Raymond, The Cathedral and the Bazaar

版本 (Versioning)

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

中等版本号 (0.x.0) 可能包含 API 更改,这与弃用策略一致。在中点版本之间进行升级之前,您应该仔细阅读发布说明。

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

弃用策略 (Deprecation policy)

REST framework 发布遵循正式的弃用策略,这与 Django 的弃用策略一致。

1.0 版本中出现的功能的弃用时间表如下:

  • 版本 1.1 将保持与 1.0 完全向后兼容,但如果您使用将被弃用的功能,则会引发 PendingDeprecationWarning 警告。默认情况下,这些警告是静默的,但是当您准备开始迁移任何所需的更改时,可以显式启用这些警告。例如,如果您使用 python -Wd manage.py test 开始运行测试,则您将收到有关您需要进行的任何API更改的警告。
  • 版本 1.2 会将这些警告升级为 DeprecationWarning,默认情况下声音很大。
  • 版本 1.3 将完全删除被弃用的 API。

注意,按照 Django 的策略,文档中没有提到的框架的任何部分通常都应该被视为私有 API,并且可能会发生更改。

升级 (Upgrading)

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

pip install -U djangorestframework

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

pip show djangorestframework

3.9.x 系列 (3.9.x series)

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 并从验证器中删除 ProhibitNullCharactersValidatorpython 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 中允许可空的 BooleanField #6183
  • 添加 Python 3.7 支持的测试 #6141
  • 使用 Django 2.1 最终版本进行测试。#6109
  • 将 djangorestframework-datatables 添加到第三方软件包 #5931
  • 更改 ISO 8601 日期格式以排除年/月 #5936
  • 将所有 pypi.python.org 网址更新到 pypi.org #5942
  • 确保 html 表单 (多部分表单数据) 尊重可选字段 #5927
  • 允许哈希 ErrorDetail。#5932
  • 解析 JSONField 的正确模式 #5878
  • 使用安全渲染描述 (来自 help_text) #5869
  • 从 deault_error_message 中删除了输入值 #5881
  • 在 DurationField 中添加 min_value/max_value 支持 #5643
  • 修复实例被覆盖在 pk-only 优化 try/except 块 #5747
  • 当值为 None 时,修复了项过滤器中的 AttributeError #5981
  • 修复了 Javascript e.indexOf 不是函数错误 #5982
  • 修复额外操作的模式 #5992
  • 改进了 get_error_detail 以使用 error_dict/error_list #5785
  • Admin 渲染器中的改进 URL #5988
  • 将 “社区” 部分添加到文档,进行小清理 #5993
  • 将监护人的进口从兼容性移出 #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
  • 修复 autoescape 没有传递到 urlize_quoted_links 过滤器 #6191

3.8.x 系列 (3.8.x series)

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
    ViewSets 已经被提供了新的属性和方法,允许它自省它的动作集和当前动作的细节。

    • 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

  • 禁用 dict/list 字段的 HTML 输入 #5702

  • 修复 HostNameVersioning 文档中的拼写错误 #5709

  • 使用 rsplit 获取导入的模块和类名 #5712

  • 形式化 URLPatternsTestCase #5703

  • 添加异常翻译测试 #5700

  • 测试静态文件 #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

  • 添加链接到 ‘A Todo List API with React’ 和 ‘Blog API’ 教程 #5837

  • 修复 ModelSerializer 中的注释错误 #5844

  • 将 admin 添加到已安装的应用程序以避免测试失败。#5870

  • 修复了 SimpleMetadata 中 UUIDField 的模式。#5872

  • 修正路由器上的文档包括命名空间。#5843

  • 使用模型对象测试虚线源默认值。#5880

  • 允许遍历可空相关字段 #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.x series)

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 兼容性垫片;用六个代替 #5579

  • TimeDelta.total_seconds() 删除兼容包装器 #5577

  • 清理整个项目中的所有空白 #5578

  • 兼容清理 #5581

  • 在可浏览的 API 视图中添加 pygments CSS 块 #5584 #5587

  • 从兼容中删除 set_rollback() #5591

  • 修复请求主体/POST 访问 #5590

  • 重命名测试以引用正确的问题 #5610

  • 文档修复 #5611 #5612

  • 在文档和代码中删除对不受支持的 Django 版本的引用 #5602

  • 测试序列化器排除已声明的字段 #5599

  • 修复了过滤后端的模式生成 #5613

  • ModelSerializer 测试的小清理 #55

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Release notes模板是用于记录软件版本更新情况的文件,通常包含版本号、发布日期、更新内容、bug修复情况等信息。它是软件开发团队向用户和利益相关者沟通的重要工具,可以帮助他们了解软件的最新变化和改进,以及如何使用新功能和修复的bug。 一般来说,release notes模板包括以下几个部分:版本信息、发布日期、新增功能、改进功能、bug修复、已知问题、更新说明等。在写release notes时,开发团队需要清楚、简洁地说明每个版本的更新内容,以便用户和利益相关者能够快速了解软件的变化和改进。 版本信息通常包括版本号、发布日期以及可能的更新级别(如major、minor、patch)。新增功能部分包括新功能的描述和如何使用它们的说明。改进功能部分描述对现有功能的改进和优化。bug修复部分列出修复的bug和问题。已知问题部分描述仍然存在但尚未解决的问题。更新说明可以包括软件的安装和配置指引等信息。 在编写release notes时,开发团队应该采用清晰、简洁的语言,避免使用过于专业或技术性的术语,确保用户和利益相关者能够轻松理解。另外,及时更新release notes模板,确保它们与软件的最新版本保持同步,以便用户获得最新的信息。 总之,release notes模板是软件开发团队向用户和利益相关者传达版本更新信息的重要工具,编写release notes时需要全面、清晰地描述软件的变化和改进,以便用户获得最新的信息并更好地使用软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值