Django 1.0 发行说明 — Django 文档

来自菜鸟教程
Django/docs/3.2.x/releases/1.0
跳转至:导航、​搜索

Django 1.0 发行说明

欢迎来到 Django 1.0!

三年多来,我们一直期待这一刻,它终于来了。 Django 1.0 代表了 Django 迄今为止发展的最大里程碑:一个让一群完美主义者真正引以为豪的 Web 框架。

Django 1.0 作为一个开源项目代表了三年多的社区开发。 Django 收到了数百名开发人员的贡献,被翻译成 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 0.96 相比,Django 1.0 有许多向后不兼容的更改。 如果您有针对 Django 0.96 编写的应用程序需要移植,请参阅我们的详细移植指南:

可以在 https://code.djangoproject.com/wiki/BackwardsIncompatibleChanges 中找到向后不兼容更改的完整列表。


Django 1.0 中的新功能

自 Django 0.96 以来,我们已经提交了 4,000 多次代码,修复了 2,000 多个错误,并编辑、添加或删除了大约 350,000 行代码。 我们还添加了 40,000 行新文档,并大大改进了现有文档。

事实上,新文档是我们最喜欢的 Django 1.0 特性之一,所以我们不妨从这里开始。 首先,有一个新的文档站点:

文档得到了极大的改进、清理,并且总体上变得很棒。 现在有专门的搜索、索引等。

我们不可能记录 1.0 中的所有新内容,但文档将是您的权威指南。 任何你看到的地方,比如:

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 的模板系统现在会自动转义变量的输出。 此行为是可配置的,并允许将变量和更大的模板构造标记为安全(不需要转义)或不安全(需要转义)。 此功能的完整指南位于 :ttag:`autoescape` 标签的文档中。


django.contrib.gis (GeoDjango)

这是一个历时一年多的项目,它以 contrib 应用程序的形式为 Django 添加了世界一流的 GIS(地理信息系统 )支持。 它的文档目前由外部维护,很快就会合并到主要的 Django 文档中。 非常感谢 Justin Bronn、Jeremy Dunck、Brett Hoerner 和 Travis Pinney 在创建和完成此功能方面所做的努力。

详见 GeoDjango


可插拔文件存储

Django 的内置 FileFieldImageField 现在可以利用可插入的文件存储后端,允许对 Django 存储上传文件的位置和方式进行广泛的自定义。 详情参见文件文档; 非常感谢 Marty Alchin 为完成这项工作付出的辛勤工作。


Jython 兼容性

感谢 Leo Soto 在 Google Summer of Code 项目中的大量工作,Django 的代码库已被重构,以消除与 Jython 的不兼容,Jython 是用 Java 编写的 Python 实现,它在 Java 虚拟机上运行 Python 代码机器。 Django 现在与即将发布的 Jython 2.5 版本兼容。


表单和管理中的通用关系

类现在包含在 django.contrib.contenttypes 中,可用于支持管理界面和最终用户表单中的通用关系。 有关详细信息,请参阅 通用关系 的文档。


INSERT/UPDATE区别

尽管 Django 的默认行为是让模型的 save() 方法自动确定是在 SQL 级别执行 INSERT 还是 UPDATE 适合大多数情况,但偶尔会出现强制一种或另一种有用的情况。 因此,模型现在可以支持 save() 的附加参数,该参数可以强制执行特定操作。

有关详细信息,请参阅 强制插入或更新


分体式 CacheMiddleware

Django 的 CacheMiddleware 被分成三个类:CacheMiddleware 本身仍然存在并保留了它以前的所有功能,但它现在是由两个独立的中间件类构建的,它们处理缓存的两个部分(插入入和从缓存中读取),为将这些功能组合到单个中间件带来问题的情况提供额外的灵活性。

缓存文档中提供了完整的详细信息,包括有关正确使用的更新说明。


重构 django.contrib.comments

作为 Google Summer of Code 项目的一部分,Thejaswi Puthraya 对 Django 的捆绑评论系统进行了重大重写和重构,大大提高了其灵活性和可定制性。


删除不推荐使用的功能

许多以前被标记为已弃用并计划在 1.0 版本之前删除的功能和方法在 Django 中不再存在。 这些包括从 django.newforms(现在仅位于 django.forms)、form_for_modelform_for_instance 辅助函数(已被 [ X166X]) 以及许多已弃用的功能,这些功能已被 Django 1.0 alpha 版本中引入的调度程序、文件上传和文件存储重构所取代。


已知问题

我们已尽最大努力使 Django 1.0 尽可能稳定,但不幸的是,我们在版本中了解了一些问题。

to_field多表模型继承

如果您使用 多表模型继承 ,请注意此警告:使用自定义 parent_linkto_field 的子模型将导致数据库完整性错误。 如下一组模型无效

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 尝试在所有数据库后端支持尽可能多的功能。 但是,并非所有数据库后端都相同,尤其是许多受支持的数据库因版本而异。 查看我们关于支持的数据库 注释是个好主意: