发行说明
版本控制
次要版本号 (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]
- 将
examples
和format
包含到 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_attribute
与Field.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_length
和min_length
选项。[#8165] - 向
AutoSchema
添加get_request_serializer
和get_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.models
但rest_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_parameters
、get_pagination_parameters
、get_filter_parameters
、get_request_body
、get_responses
、get_serializer
、get_paginator
、map_serializer
、map_field
、map_choice_field
、map_field_validators
、allows_filters
。请参阅 架构文档- 添加对 Django 3.1 的数据库不可知
JSONField
的支持。[#7467] SearchFilter
现在支持对JSONField
和HStoreField
模型字段进行嵌套搜索。[#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] - 当源字段实际上是属性时,修复
PrimaryKeyRelatedField
和HyperlinkedRelatedField
。[#7142] Token.generate_key
现在是一个类方法。[#7502]- 如果方法被包装在一个不使用
@functools.wraps
保留信息的装饰器中,@action
会发出警告。[#7098] - 弃用
serializers.NullBooleanField
,转而使用serializers.BooleanField
和allow_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
- 切换到 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
- 路由器:在
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) ]
- 添加
OpenAPIRenderer
和generate_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_route
和detail_route
,保持url_name
的旧行为,将其基于url_path
而不是函数名称。
3.8.0
日期: 2018 年 4 月 3 日
-
重大更改:更改
read_only
加上default
行为。 #5886read_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
如果没有显式的
default
,allow_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_route
和detail_route
合并到单个action
装饰器中。 - 使用
.get_extra_actions()
获取ViewSet
上的所有额外操作。 - 额外操作现在在已装饰的方法上设置
url_name
和url_path
。 url_name
现在基于函数名称,而不是url_path
,因为该路径并不总是合适的(例如,在路径中捕获参数)。- 通过
.reverse_action()
方法启用操作 URL 反转(在 3.7.4 中添加) - 反转调用示例:
self.reverse_action(self.custom_action.url_name)
- 添加
detail
initkwarg 以指示当前操作是在集合还是单个实例上进行。
其他更改
- 弃用
list_route
和detail_route
,转而使用带有detail
布尔值的action
装饰器。 - 弃用动态列表/详细信息路由变体,转而使用带有
detail
布尔值的DynamicRoute
。 - 重构路由器的动态路由生成。
list_route
和detail_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
3.7.6
- 将缺失的 *.ico 图标文件添加到打包中。
3.7.5
3.7.4
-
架构:提取用于
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
- 修复交互式文档始终在请求中将布尔字段用作 false #5492
- 提高与 Django 2.0 alpha 的兼容性。 #5500 #5503
- 改进对架构命名冲突的处理 #5486
- 围绕为点分
source
字段提供默认值添加其他文档和测试 #5489
3.7.0
- 修复
DjangoModelPermissions
以确保在调用视图的get_queryset()
方法之前进行用户身份验证。作为副作用,这会更改 HTTP 方法权限和身份验证检查的顺序,并且仅在经过身份验证后才会返回 405 响应。如果您想复制旧行为,请参阅 PR 了解详细信息。 #5376 - 弃用
APIView
和api_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
模块接受的扩展浮点值(nan
、inf
、-inf
)的异常。BC 更改:以前这些值将转换为相应的字符串。将STRICT_JSON
设置为False
以恢复以前的行为。 #5265 - 添加对 CursorPaginator 类中
page_size
参数的支持 #5250 - 默认情况下使
DEFAULT_PAGINATION_CLASS
为None
。BC 更改:如果您只是设置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
- 忽略 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_route
和detail_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_related
时PUT
请求返回的响应。(#4661,#4668) - 修复面包屑视图名称。(#4750)
- 修复 RequestsClient 确保 URL 完全限定。(#4678)
- 修复在某些情况下可写嵌套字段检查的不正确行为。(#4634,#4669)
- 解决 Django 弃用警告。(#4712)
- 清理各种测试用例。
3.5.3
- 不引发不正确的 FilterSet 弃用警告。(#4660,#4643,#4644)
- 当视图权限类引发 404 时,模式生成不应引发 404。(#4645,#4646)
- 为输入控件添加
autofocus
支持。(#4650)
3.5.2
- 在 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
- 进行
rest_framework/compat.py
导入。(#4612,#4608,#4601) - 修复模式基本路径生成中的错误。(#4611,#4605)
- 修复 ListSerializer 具有单个项目时的损坏案例。(#4609,#4606)
- 为 Python 3.5 兼容性删除裸
raise
。(#4600)
3.5.0
3.4.x 系列
3.4.7
- 当已访问 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
- 修复可浏览 API 中格式错误的 Javascript。(#4435)
- 从模式字段中跳过 HiddenField。(#4425,#4429)
- 改进 Create 以显示原始异常回溯。(#3508)
- 修复
AdminRenderer
仅显示 PK 相关字段。(#4419,#4423)
3.4.5
- 改进调试错误处理。(#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
- 确保在生成架构时视图已完全初始化。(#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
- 包含旧版 TemplateHTMLRenderer 内部 API 用户的备用方案。(#4361)
3.4.2
- 生成模式时包含传递给 '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
- 向
DefaultRouter
添加root_renderers
参数。(#4323,#4268) - 添加
url
和schema_url
参数。(#4321,#4308,#4305) - 唯一一起检查应适用于具有默认值的只读字段。(#4316,#4294)
- 在架构生成器中设置 view.format_kwarg。(#4293,#4315)
- 修复具有
pagination_class = None
的视图的架构生成器。(#4314,#4289) - 修复没有
get_serializer_class
的视图的架构生成器。(#4265,#4285) - 修复
Accept
和Content-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.Field
的initial
的值。(#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) - 记录
RelatedField
中get_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_empty
在many=True
的序列化程序中不起作用。(#3361,#3364) - 让
DurationField
接受整数。(#3359) - 多级字典在 multipart 请求中不受支持。(#3314)
- 修复 HTTP PATCH 上的
ListField
截断 (#3415,#2761)
3.2.3
日期:2015 年 8 月 24 日。
- 添加
html_cutoff
和html_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)
- 修复
1
、0
在管理界面中呈现为true
、false
的问题。(#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=False
,ManyToMany(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_route
和list_route
可变参数。(#2518) - 在
TokenAuthentication
中获取令牌时预取用户对象。(#2519)
3.0.4
日期: 2015 年 1 月 28 日。
- 支持 Django 1.8a1。(#2425, #2446, #2441)
- 添加
DictField
并支持 Django 1.8HStoreField
。(#2451, #2106) - 添加
UUIDField
并支持 Django 1.8UUIDField
。(#2448, #2433, #2432) BaseRenderer.render
现在会引发NotImplementedError
。(#2434)- 修复 Python 2.6 上的 timedelta JSON 序列化。(#2430)
ResultDict
和ResultList
现在显示为标准字典/列表。(#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) - 修复
IntegerField
和max_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)
- 修复了
CharField
的min_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 版本文档。