Django 1.9.2 版本发布说明:新特性与升级指南
创始人
2026-05-13 18:26:24
0

Django 1.9.2 版本发行说明

2016 年 2 月 1 日

Django 1.9.2 修复了 1.9 版本中的一个安全回归问题以及 1.9.1 版本中的一些错误。它还进行了一个小的不向后兼容的更改,希望不会影响任何用户。

安全问题:拥有“更改”但没有“添加”权限的用户可以为具有 save_as=TrueModelAdmin 创建对象。这个问题已得到修复。

如果一个 ModelAdmin 使用了 save_as=True (不是默认值),在编辑对象时,管理员提供了一个选项来“另存为新对象”。在 Django 1.9 中的一个回归问题阻止了对于没有“添加”权限的用户,这个表单提交不会引发“权限被拒绝”的错误。这个问题已得到修复。

向后不兼容的变更:在项目/应用程序模板中重新编写了 .py-tpl 文件。

在 Django 1.9 中将一些 Django 模板语言语法添加到默认应用程序模板中,这意味着这些文件现在具有一些无效的 Python 语法。这会对无条件地字节编译 *.py 文件的打包系统造成困难。

为了解决这个问题,现在在 Django 中使用 .py-tpl 后缀来表示项目和应用程序模板文件。startprojectstartapp 命令会将 .py-tpl 后缀替换为 .py。例如,文件名为 manage.py-tpl 的模板将被创建为 manage.py

如果你有一个包含 .py-tpl 文件的自定义项目模板,并且发现这个行为有问题,请提交一个问题报告。

漏洞修复

  • 修复了 ConditionalGetMiddleware 中的回归问题,导致 If-None-Match 检查始终返回 HTTP 200(#26024)。

  • 修复了一个导致在管理员的注销页面上显示 "user-tools" 项的回归问题(#26035)。

  • 修复了在当前语言没有翻译时翻译系统崩溃的问题(#26046)。

  • 修复了一个导致在时区从 GMT+0100 到 GMT+1200 时,打开管理员日历小部件时选择了错误的日期的回归问题(#24980)。

  • 修复了管理界面中编辑相关模型弹出窗口的回归问题,导致在父窗口的选择下拉菜单中显示转义的值(#25997)。

  • 修复了 1.8.8 中的回归问题,导致在 PostgreSQL 上的迁移中在将 db_index=Trueunique=True 添加到已经具有另一个指定的 CharFieldTextField,或者从已经同时具有两者之一的字段中移除一个,或者将 unique=True 添加到已在 unique_together 中列出的字段时,处理索引不正确的问题(#26034)。

  • 修复了一个回归问题,当在抽象模型的字段上使用字符串模型名称定义关系时,如果在另一个应用程序中使用该模型,没有指定 app_label 的引用将不再解析到抽象模型的应用程序(#25858)。

  • 修复了在 MySQL 或 PostgreSQL 上销毁现有测试数据库时崩溃的问题(#26096)。

  • 修复了在 USE_X_FORWARDED_PORT=True 时对 POST 请求的 CSRF Cookie 检查问题(#26094)。

  • 修复了当按照 ManyToManyFieldthrough 模型的关联字段进行排序时,导致 QuerySet.order_by() 崩溃的问题(#26092)。

  • 修复了在使用分布式时,当在 SQLite 上进行数据库查询参数超过 2000 个且 DEBUGTrue 时导致异常的回归问题,这个问题发生在一些分布式中,它将 SQLITE_MAX_VARIABLE_NUMBER 编译时限制增加到了 2000 以上,比如 Debian(#26063)。

  • 修复了在 ModelAdmin.readonly_fields 中使用反向的 OneToOneField 时导致崩溃的问题(#26060)。

  • 修复了在测试用例中调用 migrate 命令,并且 available_apps 属性指向一个使用 MIGRATION_MODULES 设置禁用迁移的应用程序时导致崩溃的问题(#26135)。

  • 恢复了测试和调试工具在模板继承或包含期间确定节点来自哪个模板的能力。在 Django 1.9 之前,调试工具可以通过 Node.token.source[0] 从节点中访问模板来源。这是一个未记录的私有 API。现在,每个节点都可以直接使用 Node.origin 属性获取源信息(#25848)。

  • 修复了 Django 1.8.5 中的回归问题,导致无法使用 copy.copy() 复制 SimpleLazyObject#26122)。

  • 无论 fields 参数如何,GeoJSON 序列化器输出中始终包含了 geometry_field#26138)。

  • 修复了在使用 USE_THOUSAND_SEPARATOR=True 时,contrib.gis 地图小部件的问题(#20415)。

  • 使无效的表单显示其禁用字段的初始值(#26129)。

相关内容

热门资讯

玻璃硬盘原理图 玻璃硬盘原理 玻璃硬盘,又称为磁头悬浮硬盘(Magnetic Head Flying Disk,MHFD),是一种...
闲鱼搜索规则与技巧 闲鱼最新特... 在闲鱼这个二手交易平台上,有很多用户都希望能够找到一些特殊的东西,比如一些罕见的收藏品、独特的手工艺...
家里监控最长能保存多少天的记录... 家里监控一般保存多久 随着科技的发展,家庭监控系统已经成为了许多家庭的必备设备,它不仅可以帮助我们...
华为tag有用吗 华为tag-... 华为Tag是华为手机中的一种功能,它可以帮助用户更好地管理自己的手机数据和应用,通过使用华为Tag,...
ps5手柄可用手机快充充电吗 ... PS5手柄,即PlayStation 5的DualSense手柄,是索尼公司为PlayStation...
QQ音乐提示代理模式可能无法正... QQ音乐提示代理模式可能无法正常访问,如上图所示,是怎么回事呢? 这个可能和你的网络设置有关系,首先...
收到微信有提示音怎么去掉 微信... 微信收到信息没有提示音,可能是由多种原因导致的,以下是一些可能的原因及解决方法: 1. 手机静音或...
a100显卡对应的cuda版本 在进行GPU加速的编程中,CUDA是常用的架构和平台,其版本和显卡型号之间存在着一定的对应关系。本篇...
别人打电话听不见我说话怎么回事... 当我们在使用手机时,可能会遇到别人打电话过来听不见声音的情况,这种情况可能是由多种原因导致的,下面我...
苹果手机非通讯录电话打不进来 ... 手机电话打不进来可能有多种原因,以下是一些常见的问题及解决方法: 1. **信号问题**: ...