Django源代码库

在将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工作的学生使用的分支尖端。