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

欢迎来到 Django 1.0 版本！

我们期待这一刻已经三年多了，现在它终于来了。Django 1.0是Django开发过程中最大的一个里程碑:这是一个让一群完美主义者感到自豪的Web框架。

Django 1.0 作为一个开发了三年多的开源项目，得到了数百名开发人员的支持，并被翻译成50多种语言，现在仍广泛的被世界各地的开发人员用于各种工作中

一个有趣的历史性注意事项：当Django于2005年7月第一次发布的时候，最初发布的Django版本来自互联网仓库，修订版本号是8825。Django 1.0 代表的是我们公开仓库里的修订版 8961。这看起来是符合我们当时1.0发布的到来，那个时候社区贡献者们都过度地私有化。

## 稳定性和向前兼容性

随着Django 1.0的发布，提供了承诺的API稳定性和向前兼容性。意思就是你针对Django 1.0所开发的代码能够用在1.1版本没有变化的地方，然后只需要你做少量的代码变更就可以适用 1.X 版本。

查阅 [API 稳定性指南](/zh-hans/6.1/misc/api-stability/) 了解详细信息

## 不向后兼容的变更

Django 1.0 有许多与 Django 0.96 不兼容的修改。如果您有Django 0.96 的应用需要移植，请查看我们的详细移植指南。

- [将你的应用从 Django 0.96 移植到 1.0](/zh-hans/6.1/releases/1.0-porting-guide/)

查看不兼容的更改列表请移步：<https://code.djangoproject.com/wiki/BackwardsIncompatibleChanges>.

## Django 1.0 新特性

很多

从 Django 0.96 开始，我们已经提交了 4000 多次的代码，修复了 2000 多个漏洞，并编辑了大约 350000 行的代码。我们还添加了 40000 行的新文档，极大的改进了现有的内容。

事实上，新的文档就是Django 1.0中我们喜欢的特性之一，所以我们也会从新的文档作为起点。首先，新的文档网页是：

- <https://docs.djangoproject.com/>

文档已经有了很大的提升，整洁，而且通常做的很好。目前专注在搜索、索引，以及等等功能上。

在新的1.0版本中我们无法对每一件事做到文档化，但文档确实能作为你的开发指南。任何你所看到的，例如：

> **New in Django 1.0**
>
> 此功能是 Django 1.0 中的新功能

你能知道你所要找的新内容，或者有哪些变化。

Django 1.0其它的主要亮点有：

### 重构的管理应用程序

Django的管理接口 (`django.contrib.admin`) 已经完全重构了；管理员定义功能目前完全解构成模块定义形式 (不再是 `class Admin` 模块中的类形式！) ，重写代码来使用Django的新表单处理库 (曾在 0.96 版本中介绍成 `django.newforms` 内容，而此时直接可用成 `django.forms` 了) 以及重新设计成具有扩展能力和自定义能力。完整的管理员应用程序文档在官方Django文档网站上可以看到：

参考 [管理员指南](/zh-hans/6.1/ref/contrib/admin/) 了解细节

### 改进了 Unicode 的处理

Django内部机制已经重构成使用Unicode字符集；这回彻底让在Django中使用处理非西欧内容和数据的任务变得容易。另外，工具函数都提供成容易与第三方库协同工作的函数，甚至也能够与那些不能处理Unicode字符集的操作系统一起协同工作。细节都可以在Django的Unicode处理文档中找到可用的内容。

参见 [Unicode 数据](/zh-hans/6.1/ref/unicode/)。

### 一项ORM提升

Django 的面向对象关系映射器——提供 Django 模型类与您的数据库之间的映射，并调解你的数据库查询的组件——通过大规模重构得到了显著改进。对于大多数使用 Django 的用户来说，这保持了向后兼容性；公开的数据库查询 API 经历了一些细微的变化，但大部分更新都发生在 ORM 的内部结构中。关于这些变化的指南，包括不向后兼容的修改和由这次重构开启的新功能提及，[在 Django 维基上可以获取](https://code.djangoproject.com/wiki/QuerysetRefactorBranch) 。

### 模版变量的自动转义

要提供针对跨网页脚本（XSS）漏洞的安全提升，Django的模版系统现在会对变量结果进行自动转义。这种行为是可以进行配置的，而且既可以允许变量标记出安全，也可以对更大模版的建立标记成安全（即需要不执行转义）或标记成不安全（即需要执行转义）。自动转移这个特性的完整指南在文档中 [`autoescape`](/zh-hans/6.1/ref/templates/builtins/#std-templatetag-autoescape) 标签位置上。

### `django.contrib.gis` (Django地理信息功能)

一个为期超过一年以上的项目，就是世界级别类型的GIS ([地理信息系统](https://en.wikipedia.org/wiki/Geographic_information_system)) 支持了Django框架，是以一种 `contrib` 应用程序形式运作的。本身的文档目前由项目外团队进行维护，并且很快以后会合并到Django主文档中去。非常感谢 Justin Bronn, Jeremy Dunck, Brett Hoerner 和 Travis Pinney 为建立和完成本特性而做出的努力。

详见 [GeoDjango](/zh-hans/6.1/ref/contrib/gis/)。

### 移动文件存储

Django的内置 `FileField` 和 `ImageField` 目前获得了后端移动文件存储的功能优势，Django允许扩展自定义上传文件，指定上传文件的位置和如何上传文件。细节可以查看 [文件文档内容](/zh-hans/6.1/topics/files/); 非常感谢 Marty Alchin 投入了艰难的工作完成这项特性功能。

### Jython 兼容性

非常感谢 Leo Soto 在谷歌夏季编程项目中做了大量工作，Django 的代码库已经重构后删除了与 [Jython](https://www.jython.org/) 不兼容的代码部分，一个用 Java 写的 Python 实现，可以在 Java 虚拟机上运行 Python 代码。Django 目前可以兼容即将发布的 Jython 2.5 版本了。

### 表单和管理员中的普通关联

许多类目前都放在了 `django.contrib.contenttypes` 模块中，这是用来支持后台接口和用户形式的普通关联。参考 [普通关联文档](/zh-hans/6.1/ref/contrib/contenttypes/#generic-relations) 了解细节。

### ```INSERT``和``UPDATE``` 区别

尽管 Django对于SQL数据库 ```INSERT``或 ``UPDATE``` 操作有一个默认自动执行的模型\`\`save()\`\`方法行为，在大多数情况下都适用，但偶尔也有一些情况要强制使用一个或另一个才行。作为结果，许多模块目前可以支持另一个可选参数，让\`\`save()\`\`方法强制执行具体的一个操作。

参考 指向模型强制插入 文档了解细节。

### 去掉 `CacheMiddleware`

Django的 `CacheMiddleware` 已经分解成三个类了： `CacheMiddleware` 依然存在并且保留了以前本身的全部功能，但目前建立要从2个不同的中间件类来建立，分别处理缓存中的2个部分 (插入到缓存中和从缓存中读取)，这样为一些情况提供了额外的灵活性，例如把许多功能组合到一个中间件里来解决问题。

全部细节，包括适当地更新注释，都在 [缓存文档](/zh-hans/6.1/topics/cache/) 中。

### 重构 `django.contrib.comments`

作为谷歌夏季代码项目的一部分， Thejaswi Puthraya 负责主要的重写和重构Django的捆绑注释系统，极大地提高了灵活性和自定义功能。

### 移除淘汰的特性

一些特性和方法前面已经标记成淘汰的内容，而且在1.0版本发布时会被移除，在现在的Django版本中已经没有了。这些包括了导入库名 `django.newforms` (目前导入库名直接变成了 `django.forms`)，而且 `form_for_model` 和 `form_for_instance` 辅助函数 (都被 `ModelForm` 所取代) 以及一些淘汰的特性都换成了调度器，文件上传和文件存储功能，在Django 1.0 alpha版本中进行的重构。

## 已知问题

我们让 Django 1.0 尽可能成为稳固版本做了最好的工作，但不幸的是在发布后依然有一些问题。

### 多表模型继承使用 `to_field`

如果你正在使用 [多表模型继承](/zh-hans/6.1/topics/db/models/#multi-table-inheritance) 的话，要知道一项警告：子模型在使用一个自定义 `parent_link` 和 `to_field` 的时候会导致数据库整合错误。一套模型可能会出现 **not valid**:

```
class Parent(models.Model):
    name = models.CharField(max_length=10)
    other_value = models.IntegerField(unique=True)

class Child(Parent):
    father = models.OneToOneField(
        Parent, primary_key=True, to_field="other_value", parent_link=True
    )
    value = models.IntegerField()
```

这个漏洞将在 Django 的下一个版本中修复。

### 警告中含带某些数据库支持信息

Django 尽可能支持所有数据库后端的特性。不管如何，不是所有的数据库后端都可能实现，并且在许多特殊的数据库支持上都是每个版本都有不同之处。有一个好的办法就是查阅文档 [所支持的数据库注意事项](/zh-hans/6.1/ref/databases/)：

- [MySQL 注意事项](/zh-hans/6.1/ref/databases/#mysql-notes)
- [SQLite 注意事项](/zh-hans/6.1/ref/databases/#sqlite-notes)
- [Oracle 注意事项](/zh-hans/6.1/ref/databases/#oracle-notes)
