Django 原始碼儲存庫

當您將 Django 應用程式部署到實際的生產環境時,幾乎總是會想要使用 Django 的官方套件版本

但是,如果您想嘗試即將發布版本的開發中程式碼,或為 Django 的開發做出貢獻,您需要取得 Django 原始碼儲存庫的複本。

本文檔涵蓋程式碼儲存庫的佈局方式,以及如何在其中工作和尋找內容。

高階概觀

Django 原始碼儲存庫使用 Git 來追蹤程式碼隨時間的變更,因此您的電腦上需要有 Git 用戶端(名為 git 的程式),而且您會想要熟悉 Git 的基本運作方式。

Git 的網站提供各種作業系統的下載。該網站還包含大量的文件

Django Git 儲存庫位於線上 github.com/django/django。它包含所有 Django 版本的完整原始碼,您可以在線上瀏覽。

Git 儲存庫包含數個 分支

  • main 包含主要的開發中程式碼,這些程式碼將成為 Django 的下一個套件版本。這是大多數開發活動的焦點所在。

  • stable/A.B.x 是發布準備工作發生的分支。它們也用於在功能版本的初始發布後,根據需要發生的錯誤修復和安全性發布。

Git 儲存庫也包含 標籤。這些是自 1.0 版以來產生套件化 Django 發行版本的確切修訂版。

許多標籤也存在於 archive/ 前綴下,用於 已封存的工作

Djangoproject.com 網站的原始碼可以在 github.com/django/djangoproject.com 中找到。

主分支

如果您想嘗試 Django 下一個版本的開發中程式碼,或者您想透過修復錯誤或開發新功能來為 Django 做出貢獻,您會想要從主分支取得程式碼。

注意

在 2021 年 3 月之前,主分支稱為 master

請注意,這將取得所有的 Django:除了包含 Python 程式碼的最上層 django 模組之外,您還將取得 Django 的文件、測試套件、封裝指令碼和其他雜項的複本。Django 的程式碼將以名為 django 的目錄存在於您的複本中。

若要使用自己的應用程式嘗試開發中的程式碼,請將包含複本的目錄放在您的 Python 匯入路徑中。然後,尋找 Django 的 import 陳述式將會找到您複本中的 django 模組。

如果您要處理 Django 的程式碼(例如,修復錯誤或開發新功能),您可能可以在此停止閱讀,並移至 貢獻 Django 的文件,其中涵蓋諸如偏好的程式碼樣式以及如何產生和提交修補程式等事項。

穩定分支

Django 使用分支來準備 Django 的發行版本。每個主要發行系列都有自己的穩定分支。

這些分支可以在儲存庫中找到,其形式為 stable/A.B.x 分支,並將在第一個 alpha 標記之後立即建立。

例如,在標記Django 1.5 alpha 1 之後,立即建立 stable/1.5.x 分支,並在那裡完成所有準備 1.5 最終版本的程式碼的後續工作。

支援的版本中所述,這些分支也提供錯誤修復和安全性支援。

例如,在發布 Django 1.5 之後,stable/1.5.x 分支僅接收安全性與嚴重穩定性錯誤的修正,這些修正最終會以 Django 1.5.1 等版本發布,stable/1.4.x 僅接收安全性與資料遺失的修正,而 stable/1.3.x 不再接收任何更新。

歷史資訊

處理 stable/A.B.x 分支的此原則是從 Django 1.5 發行週期開始採用的。

先前,這些分支直到發行後才立即建立,而穩定工作發生在主儲存庫分支上。因此,在最終發行之前,無法提交 Django 下一個版本的新功能開發工作。

例如,在發行 Django 1.3 後不久,建立了 stable/1.3.x 分支。該版本的官方支援已過期,因此不再接收來自 Django 專案的直接維護。但是,該分支和所有其他類似命名的分支仍然存在,而感興趣的社群成員偶爾會使用它們來為舊的 Django 版本提供非官方支援。

標籤

每個 Django 發行版本都會由發行者標記並簽署。

這些標籤可以在 GitHub 的 標籤頁面上找到。

封存的功能開發工作

歷史資訊

自從 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:為 Django 新增國際化支援。自 0.90 版以來,這一直是 Django 的一部分。

  • magic-removal:對 Django 物件關聯對應器的內部和公開 API 進行重大重構。自 0.95 版以來,這一直是 Django 的一部分。

  • multi-auth:對 Django 的捆綁式驗證框架進行重構,新增了對驗證後端的支援。自 0.95 版以來,這一直是 Django 的一部分。

  • new-admin:對 Django 的捆綁式管理應用程式進行重構。這自 0.91 版以來成為 Django 的一部分,但在 Django 1.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 的學生所使用的分支提示。

返回頂部