Django 1.9.2发行说明

2016年2月1日

Django1.9.2修复了1.9中的安全回归和1.9.1中的几个错误。它还做了一个小的向后不兼容的更改,希望不会影响任何用户。

安全问题:具有“更改”但不具有“添加”权限的用户可以为创建对象 ModelAdmin 与之同在 save_as=True

如果A ModelAdmin 使用 save_as=True (不是默认值),管理员在将对象编辑为“另存为新对象”时提供了一个选项。Django1.9中的回归阻止了表单提交对没有“添加”权限的用户引发“拒绝权限”错误。

向后不兼容的更改: .py-tpl 项目/应用程序模板中重写的文件

在django 1.9的默认应用程序模板中添加了一些django模板语言语法,这意味着这些文件现在具有一些无效的python语法。这给无条件字节编译的打包系统带来了困难。 *.py 文件夹。

为了弥补这一点,a .py-tpl 后缀现在用于django中包含的项目和应用程序模板文件。这个 .py-tpl 后缀替换为 .pystartprojectstartapp 命令。例如,具有文件名的模板 manage.py-tpl 将创建为 manage.py .

如果您有一个自定义项目模板包含 .py-tpl 文件并发现此行为有问题。

错误修正

  • 修正了回归 ConditionalGetMiddleware 造成 If-None-Match 检查以始终返回HTTP 200 (#26024

  • 修复了导致“用户工具”项显示在管理员注销页上的回归 (#26035

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

  • 修正了在打开时区(从GMT+0100到GMT+1200)的“管理日历”小部件时导致选择错误日期的回归。 (#24980

  • 修复了管理员的编辑相关模型弹出窗口中导致在父窗口的选择下拉列表中显示转义值的回归 (#25997

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

  • 修正了一个回归,在这个回归中,如果在另一个应用程序中使用一个字符串模型名(不带app_标签),在抽象模型的字段上定义一个关系,那么该字符串模型名不再解析对抽象模型的app的引用。 (#25858

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

  • 修复了在以下情况下对POST请求进行的CSRF cookie检查: USE_X_FORWARDED_PORT=True (#26094

  • 修正了 QuerySet.order_by() 按关系字段排序时崩溃 ManyToManyField through 模型 (#26092

  • 修复了在使用超过2000个参数对sqlite进行数据库查询时导致异常的回归 DEBUGTrue 关于增加 SQLITE_MAX_VARIABLE_NUMBER 编译时间限制在2000年以上,如Debian (#26063

  • 修正了倒车时的撞车问题 OneToOneField 在里面 ModelAdmin.readonly_fields (#26060

  • 修复了调用 migrate 在测试用例中使用 available_apps 属性指向禁用迁移的应用程序 MIGRATION_MODULES 设置 (#26135

  • 恢复了测试和调试工具确定节点来源的模板的能力,即使在模板继承或包含期间也是如此。在django 1.9之前,调试工具可以通过 Node.token.source[0] . 这是一个未注册的私有API。原点现在可以直接在每个节点上使用 Node.origin 属性 (#25848

  • 修正了django 1.8.5中破坏复制a的回归。 SimpleLazyObject 具有 copy.copy() (#26122

  • 总是包括 geometry_field 在geojson序列化程序输出中,无论 fields 参数 (#26138

  • 修正了 contrib.gis 使用时映射小部件 USE_THOUSAND_SEPARATOR=True (#20415

  • 使无效窗体显示其禁用字段的值的初始值 (#26129