Django 3.1.1发布说明

September 1, 2020

Django 3.1.1修复了3.1中的两个安全问题和几个错误。

UTE-2020-24583:Python 3.7+上中层目录的权限不正确

在Python 3.7+上, FILE_UPLOAD_DIRECTORY_PERMISSIONS 模式未应用于上传文件过程中创建的中间级目录以及使用时收集的中间级静态目录 collectstatic 管理命令。

您应该检查并手动修复现有中间级目录的权限。

UTE-2020-24584:Python 3.7+上文件系统缓存的中级目录中的权限升级

在Python 3.7+上,文件系统缓存的中间级目录具有系统的标准ummark,而不是 0o077 (no组或其他权限)。

错误修正

  • 修复了东亚语言管理员导航边栏中翻译后的动作标签的包装 (#31853 )。

  • 修复了管理员导航侧边栏中长型号名称的包装 (#31854 )。

  • 修复了将同一项目的多个实例升级到Django 3.1时对会话数据进行编码的问题 (#31864 )。

  • 调整了管理员的导航侧边栏模板,以减少渲染时的调试日志记录 (#31865 )。

  • 修复了中数据丢失的可能性 select_for_update() .中使用指向代理模型的相关字段时 of 参数,相应的模型未锁定 (#31866 )。

  • 修复了Django 2.0中回归后复制具有缓存字段值的模型实例时数据丢失的可能性 (#31863 )。

  • 修复了Django 3.1中导致解码无效会话数据时崩溃的回归 (#31895 )。

  • Reverted a deprecation in Django 3.1 that caused a crash when passing deprecated keyword arguments to a queryset in TemplateView.get_context_data() (#31877).

  • 强制的线程敏感性 MiddlewareMixin.process_request()process_response() 在spec上下文中时挂钩 (#31905 )。

  • 固定 __in 查找关键转换 JSONField 使用MariaDB、SQL、Oracle和SQLite (#31936 )。

  • 修复了Django 3.1中导致权限错误的回归 CommonPasswordValidatorsettings.py 产生 startproject 命令,当用户没有Django安装路径中所有中间目录的权限时 (#31912 )。

  • 修复了检测到超速 get_response 可在各种内置中间件中调用 (#31928 )。

  • Fixed a QuerySet.order_by() crash on PostgreSQL when ordering and grouping by JSONField with a custom decoder (#31956). As a consequence, fetching a JSONField with raw SQL now returns a string instead of preloaded data. You will need to explicitly call json.loads() in such cases.

  • 修复了 QuerySet.delete() 当针对聚合函数进行过滤时,在MariaDB 10.3.2+上的Django 3.1中出现性能回归,导致Mysearch (#31965 )。

  • 修复了 django.contrib.admin.EmptyFieldListFilter 使用反向关系时崩溃 (#31952 )。

  • 当启用导航侧边栏时,防止内容在管理更改集视图中溢出 (#31901 )。