Django 1.0 版本发布说明:新特性与升级指南
创始人
2026-04-30 19:24:09
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 稳定性指南 了解详细信息

不向后兼容的变更

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

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

Django 1.0 新特性

很多

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

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

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

在新的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 维基上可以获取

模版变量的自动转义

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

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

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

详见 GeoDjango

移动文件存储

Django的内置 FileFieldImageField 目前获得了后端移动文件存储的功能优势,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个部分 (插入到缓存中和从缓存中读取),这样为一些情况提供了额外的灵活性,例如把许多功能组合到一个中间件里来解决问题。

全部细节,包括适当地更新注释,都在 缓存文档 中。

重构 django.contrib.comments

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

移除淘汰的特性

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

已知问题

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

多表模型继承使用 to_field

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

相关内容

热门资讯

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