常見問題:一般¶
為何會有這個專案?¶
Django 源於一個非常實際的需求:World Online,一個報紙網路營運部門,負責在新聞截稿期限內建置密集的網路應用程式。在步調快速的新聞編輯室中,World Online 通常只有幾個小時的時間,將複雜的網路應用程式從概念轉變為公開發布。
同時,World Online 的網路開發人員在遵循網路開發的最佳實務方面,始終是完美主義者。
在 2003 年秋季,World Online 的開發人員(Adrian Holovaty 和 Simon Willison)拋棄了 PHP,開始使用 Python 開發其網站。當他們建置像是 Lawrence.com 等密集且高度互動的網站時,他們開始提取一個通用的網路開發框架,讓他們能夠越來越快地建置網路應用程式。他們不斷調整這個框架,在兩年內加入了改進功能。
在 2005 年夏季,World Online 決定將產生的軟體 Django 開源。如果沒有眾多開源專案(例如 Apache、Python 和 PostgreSQL 等),Django 就不可能實現,我們很高興能夠回饋開源社群。
「Django」是什麼意思,又該如何發音?¶
Django 的命名來自於 Django Reinhardt,一位 1930 年代至 1950 年代初的爵士 Manouche 吉他手。時至今日,他仍被認為是有史以來最偉大的吉他手之一。
聽聽他的音樂。你會喜歡的。
Django 的發音是 JANG-oh,與 FANG-oh 押韻。「D」不發音。
我們也錄製了一段 發音的音訊片段。
Django 穩定嗎?¶
是的,它非常穩定。像 Disqus、Instagram、Pinterest 和 Mozilla 等公司已經使用 Django 多年。建立在 Django 上的網站已經承受過每秒超過 5 萬次的流量高峰。
Django 可擴展嗎?¶
是的。相較於開發時間,硬體很便宜,因此 Django 的設計旨在盡可能利用您可以投入的硬體。
Django 使用「無共享」架構,這表示您可以在任何層級新增硬體,例如資料庫伺服器、快取伺服器或網路/應用程式伺服器。
該框架清楚地分隔了資料庫層和應用程式層等元件。它還內建一個簡單但功能強大的 快取框架。
誰在幕後?¶
Django 最初是在美國堪薩斯州勞倫斯市的一家報紙網路部門 World Online 開發的。Django 現在由一個國際性的 志工團隊 運作。
Django 如何授權?¶
Django 是根據 3 條款 BSD 授權 發布的。這是一個開源授權,授予修改和重新發布 Django 的廣泛權限。
為何 Django 包含 Python 的授權檔案?¶
Django 包含來自 Python 標準程式庫的程式碼。Python 是根據寬鬆的開源授權發布的。為了符合 Python 的條款,Django 隨附了 一份 Python 授權的副本。
哪些網站使用 Django?¶
BuiltWithDjango.com 提供一個不斷增加的由 Django 驅動的網站清單。
Django 看起來像是一個 MVC 框架,但是你把 Controller 稱為「view」,而 View 稱為「template」。為什麼不使用標準名稱?¶
嗯,標準名稱是有爭議的。
在我們對 MVC 的解釋中,「view」描述呈現給使用者的資料。它不一定描述資料看起來的樣子,而是描述呈現哪些資料。「view」描述您看到哪些資料,而不是您如何看到它。這是一個細微的區別。
因此,在我們的例子中,「view」是特定 URL 的 Python 回呼函式,因為該回呼函式描述呈現哪些資料。
此外,將內容與呈現分開是有道理的,這就是樣板的用途。在 Django 中,「view」描述呈現哪些資料,但「view」通常會委派給一個樣板,該樣板描述資料如何呈現。
那麼,「controller」又在哪裡呢?在 Django 的情況下,它可能是框架本身:根據 Django URL 設定將請求傳送到適當「view」的機制。
如果您對縮寫詞感興趣,您可以說 Django 是一個「MTV」框架,也就是「model」、「template」和「view」。這種分類更有意義。
歸根結底,一切都是為了完成任務。而且,無論名稱如何,Django 都以對我們來說最合乎邏輯的方式完成任務。
「框架 X」可以執行「功能 Y」– 為什麼 Django 不行?¶
我們很清楚有其他很棒的網路框架,而且我們不反對在適當的情況下借用想法。然而,Django 的開發正是因為我們對現狀不滿意,所以請注意,「因為「框架 X」可以做到」並不足以成為將特定功能新增到 Django 的理由。
為什麼你們從頭開始編寫整個 Django,而不是使用其他 Python 程式庫?¶
在 Django 最初編寫時,Adrian 和 Simon 花了相當多的時間研究可用的各種 Python 網路框架。
我們認為,沒有一個框架是完全令人滿意的。
我們很挑剔。您甚至可以稱我們為完美主義者。(有截止期限的。)
隨著時間的推移,我們偶然發現了一些開源程式庫,它們的功能與我們已經實作的功能相同。看到其他人以類似的方式解決類似的問題令人感到欣慰,但要整合外部程式碼已經太遲了:我們已經在幾個生產環境中編寫、測試和實作了自己的框架位元,而且我們的程式碼完美地滿足了我們的需求。
然而,在大多數情況下,我們發現現有的框架/工具不可避免地存在某種基本、致命的缺陷,令我們感到不安。沒有一個工具 100% 符合我們的理念。
就像我們說的:我們很挑剔。
我們在 設計理念頁面 中記錄了我們的理念。
Django 是一個內容管理系統 (CMS) 嗎?¶
不,Django 不是 CMS,也不是任何類型的「統包產品」。它是一個網路框架;它是一個讓您建置網站的程式設計工具。
例如,將 Django 與 Drupal 之類的東西比較沒有多大意義,因為 Django 是您用來建立像 Drupal 之類的東西。
是的,Django 的自動管理網站非常棒且省時,但管理網站是 Django 框架的一個模組。此外,雖然 Django 對於建置「類似 CMS」的應用程式有特殊的便利性,但這並不表示它不適用於建置「非 CMS」的應用程式(無論那是什麼意思!)。
如何下載 Django 文件以離線閱讀?¶
Django 文件可在每個 Django tarball 發行版的 docs
目錄中取得。這些文件採用 reST (reStructuredText) 格式,且每個文字檔案都對應到 Django 官方網站上的網頁。
由於文件 儲存在修訂控制中,您可以像瀏覽程式碼變更一樣瀏覽文件變更。
從技術上來說,Django 網站上的文件是從這些 reST 文件的最新開發版本產生的,因此 Django 網站上的文件可能比最新 Django 發行版隨附的文件提供更多資訊。
如何引用 Django?¶
很難給出正式的引用格式,原因有二:引用格式在不同的出版物之間可能差異很大,而且軟體的引用標準仍然存在一些爭議。
例如,APA 樣式 會指示如下的內容
Django (Version 1.5) [Computer Software]. (2013). Retrieved from https://djangoproject.dev.org.tw/.
然而,唯一真正的指南是您的發行商會接受的內容,因此請取得這些指南的副本,並盡可能填補空白。
如果您的參考樣式指南需要發行商名稱,請使用「Django Software Foundation」。
如果您需要出版地點,請使用「Lawrence, Kansas」。
如果您需要網址,請使用 https://djangoproject.dev.org.tw/。
如果您需要名稱,請僅使用「Django」,而不要使用任何標語。
如果您需要出版日期,請使用您參考的版本發布年份(例如,v1.5 為 2013 年)。