---
title: "Django 1.8.4 版本发行说明"
version: 5.1
locale: zh-hans
source: https://docs.djangoproject.com/zh-hans/5.1/releases/1.8.4/
canonical: https://djangodocs.dev/zh-hans/5.1/releases/1.8.4/
---
# Django 1.8.4 版本发行说明

*2015 年 8 月 18 日*

Django 1.8.4 修复了 1.8.3 中的一个安全问题和几个错误。

## 在 `logout()` 视图中存在拒绝服务的可能性，因为会话存储被填满。

以前，在匿名访问 `django.contrib.auth.views.logout()` 视图时可以创建会话（前提是没有像在管理界面中那样使用 [`login_required()`](/zh-hans/5.1/topics/auth/default/#django.contrib.auth.decorators.login_required) 进行装饰）。这可能允许攻击者通过发送重复的请求轻松创建许多新的会话记录，潜在地填满会话存储或导致其他用户的会话记录被逐出。

[`SessionMiddleware`](/zh-hans/5.1/ref/middleware/#django.contrib.sessions.middleware.SessionMiddleware) 已经修改，不再创建空的会话记录，即使 [`SESSION_SAVE_EVERY_REQUEST`](/zh-hans/5.1/ref/settings/#std-setting-SESSION_SAVE_EVERY_REQUEST) 处于活动状态也是如此。

## 漏洞修复

- 增加了对新添加的 [`UUIDField`](/zh-hans/5.1/ref/models/fields/#django.db.models.UUIDField) 的值进行序列化的能力 ([#25019](https://code.djangoproject.com/ticket/25019))。
- 如果在新的 `TEMPLATES` 设置之外定义了旧的 `TEMPLATE_*` 设置，将会添加一个系统检查警告。
- 修复了 `QuerySet.raw()`，以便在使用具有 `primary_key=True` 的 `ForeignKey` 字段的 `db_column` 名称时不会引发 `InvalidQuery` 错误 ([#12768](https://code.djangoproject.com/ticket/12768))。
- 在 `TestCase.setUpTestData()` 中防止异常泄漏事务（[#25176](https://code.djangoproject.com/ticket/25176)）。
- 修复了 `contrib.postgres.forms.HStoreField` 中的 `has_changed()` 方法（[#25215](https://code.djangoproject.com/ticket/25215)，[#25233](https://code.djangoproject.com/ticket/25233)）。
- 在运行 `migrate` 命令时修复了合并迁移记录的问题（[#25231](https://code.djangoproject.com/ticket/25231)）。
- 将 [未保存的模型实例分配数据丢失检查](/zh-hans/5.1/releases/1.8/#unsaved-model-instance-check-18) 移动到了 `Model.save()` 中，以便更容易使用内存中的模型（[#25160](https://code.djangoproject.com/ticket/25160)）。
- 防止了对 `ArrayField` 创建 `varchar_patterns_ops` 和 `text_patterns_ops` 索引（[#25180](https://code.djangoproject.com/ticket/25180)）。
