# Django 3.2.11.dev 文档

# 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稳定性指南”了解详细信息

## 不向后兼容的变更

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

- 将你的应用从 Django 0.96 移植到 1.0

查看不兼容的更改列表请移步：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文档网站上可以看到：

参考 管理员指南 了解细节

### 改进了 Unicode 的处理

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

参见 Unicode 数据。

### 一项ORM提升

Django的面向对象映射器 -- 这个组件提供了把Django模型类与你的数据库映射起来的作用，而且调解你的数据库查询 -- 都是通过大量重构代码工作实现了动态提升。对于大部分Django用户来说，这是一种向后兼容的体现；对于数据库查询来说，公开面对API经历了很少的变更，但大部分更新都是发生在ORM的内部机制中。一项变更指南，包括向后兼容的修改，以及一些新特性的提醒都是通过这次重构开放出来的，相关内容是在 `可用的Django wiki`__上找到。

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

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

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

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

详见 GeoDjango。

### 移动文件存储

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

### Jython 兼容性

非常感谢 Leo Soto 在谷歌夏季编程项目中做了大量工作，Django的代码库已经重构后删除了与 `Jython`_不兼容的代码部分，一项用Java写的Python部署，可以在Java虚拟机上运行Python代码。Django目前可以胜任即将发布的 Jython 2.5 版本了。

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

许多类目前都放在了 `django.contrib.contenttypes` 模块中，这是用来支持后台接口和用户形式的普通关联。参考 普通关联文档 了解细节。

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

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

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

### 去掉 `CacheMiddleware`

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

全部细节，包括适当地更新注释，都在 :doc:`缓存文档 </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`

如果你正在使用 多表模型继承 的话，要知道一项警告：子模型在使用一个自定义 `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 尽可能支持所有数据库后端的特性。不管如何，不是所有的数据库后端都可能实现，并且在许多特殊的数据库支持上都是每个版本都有不同之处。有一个好的办法就是查阅文档 所支持的数据库注意事项：

- MySQL 注意事项
- SQLite 注意事项
- Oracle 注意事项