在将Django应用程序部署到实际的生产环境中时,您几乎总是希望使用 an official packaged release of Django .
但是,如果您想在即将发布的版本中试用开发代码,或者为Django的开发做出贡献,那么您需要获得Django源代码存储库的复制。
本文档介绍了代码存储库的布局方式,以及如何使用和查找其中的内容。
Django源代码存储库使用 Git 要跟踪代码随时间的变化,您需要一个git客户机的副本(一个名为 git
)在您的计算机上,您将希望熟悉Git工作原理的基础知识。
Git的网站提供各种操作系统的下载。该网站还包含大量 documentation .
Django Git存储库位于 github.com/django/django . 它包含所有django版本的完整源代码,您可以在线浏览。
Git存储库包括几个 branches :
main
包含主要的开发中代码,这些代码将成为Django的下一个打包版本。这是大多数开发活动的重点所在。
stable/A.B.x
是进行发布准备工作的分支。它们还用于修复错误和安全性发布,这些发布在功能版本的初始发布之后根据需要进行。
Git存储库还包含 tags . 这些是打包的django版本自1.0版以来的确切版本。
下还存在许多标签 archive/
前缀 archived work 。
的源代码 Djangoproject.com 网站可在 github.com/django/djangoproject.com .
如果您想尝试下一版Django的开发中代码,或者如果您想通过修复错误或开发新特性来为Django做出贡献,您将希望从Main分支获得代码。
备注
在2021年3月之前,主要分支机构被称为 master
。
注意这会 all Django:除了顶层 django
模块包含python代码,您还将获得django文档、测试套件、打包脚本和其他杂项的副本。Django的代码将作为名为 django
.
要在您自己的应用程序中尝试开发中的代码,请将包含克隆的目录放置在您的Python导入路径上。然后 import
寻找Django的声明会找到 django
克隆中的模块。
如果您要处理django的代码(例如,修复bug或开发新功能),您可能可以停止在此处阅读并转到 the documentation for contributing to Django 其中包括首选的编码样式以及如何生成和提交补丁。
Django使用分支为Django的发布做准备。每个主要的发行系列都有自己的稳定分支。
这些分支可以在存储库中作为 stable/A.B.x
分支,并将在第一个alpha被标记后立即创建。
例如,紧接着 Django 1.5阿尔法1 被标记,分支 stable/1.5.x
创建了,并在那里完成了为最终1.5版本准备代码的所有进一步工作。
这些分支还提供错误修复和安全支持,如中所述。 支持的版本 .
例如,Django1.5发布后,分支机构 stable/1.5.x
只接收安全和关键稳定性错误的修复,这些错误最终以django 1.5.1等形式发布, stable/1.4.x
仅接收安全和数据丢失修复,以及 stable/1.3.x
不再接收任何更新。
历史信息
此处理策略 stable/A.B.x
从Django1.5发布周期开始,采用了分支。
以前,这些分支直到发布之后才被创建,并且主存储库分支上发生了稳定化工作。因此,在最终版本发布之前,不能为下一个版本的django提交任何新的特性开发工作。
例如,Django1.3发布后不久,分支机构 stable/1.3.x
创建。官方对该版本的支持已经到期,因此它不再接受Django项目的直接维护。然而,这和所有其他类似名称的分支仍然存在,感兴趣的社区成员偶尔使用它们为老的django版本提供非官方的支持。
每个django版本都由发布者标记和签名。
标签可以在Github上找到 tags 页。
历史信息
由于Django在2012年迁移到了Git,任何人都可以复制存储库并创建自己的分支,从而减少了在源代码存储库中使用官方分支的需要。
如果您正在研究存储库的历史记录,例如,如果您试图了解一些功能是如何设计的,那么下面的部分将非常有用。
从本质上讲,功能开发分支往往是临时的。一些成功的特性被合并回Django的主分支,成为官方版本的一部分,但另一些则不是;在任何一种情况下,总有一天分支不再被任何开发人员积极开发。在这一点上,分支机构被视为关闭。
Django曾经使用SubVersion版本控制系统维护,但没有标准的方式来表示这一点。作为解决办法,Django关闭且不再维护的分支机构被搬进 attic
。
下存在许多标签 archive/
前置以保持对本作品和其他具有历史意义的作品的引用。
下的以下标签 archive/attic/
前置引用分支的尖端,其代码最终成为Django本身的一部分:
boulder-oracle-sprint
:为Django的对象关系映射器添加了对Oracle数据库的支持。这是自1.0版本以来Django的一部分。
gis
:为Django的对象关系映射器添加了对地理/空间查询的支持。这是自1.0发布以来django的一部分,作为捆绑应用程序 django.contrib.gis
.
i18n
:增加 internationalization support 到Django。这是自0.90版本以来Django的一部分。
magic-removal
:Django对象关系映射器的内部和公共API的主要重构。这是自0.95版本以来Django的一部分。
multi-auth
:重构 Django's bundled authentication framework 增加了对 authentication backends . 这是自0.95版本以来Django的一部分。
new-admin
:重构 Django's bundled administrative application . 从0.91版本开始,这成为了Django的一部分,但在Django1.0版本之前被另一个重构(见下一个清单)所取代。
newforms-admin
:Django捆绑管理应用程序的第二次重构。从1.0版本开始,这就成为了django的一部分,并且是当前的 django.contrib.admin
.
queryset-refactor
:Django对象关系映射器内部的重构。从1.0版本开始,这就成为了Django的一部分。
unicode
:对django的内部进行重构,以便在django和django应用程序中的大多数位置一致地使用基于Unicode的字符串。从1.0版本开始,这就成为了Django的一部分。
此外,下的以下标签 archive/attic/
前置引用了已关闭的分支的提示,但其代码从未合并到Django中,并且它们旨在实现的功能从未完成:
full-history
generic-auth
multiple-db-support
per-object-permissions
schema-evolution
schema-evolution-ng
search-api
sqlalchemy
最后,在 archive/
前置,存储库包含 soc20XX/<project>
标签引用了2009年和2010年Google Summer of Code计划期间在Django工作的学生使用的分支尖端。
5月 28, 2025