2009-02-09 94 views
31

任何人都可以推薦一本關於如何組織和分割大型Django項目的技巧/指南的優秀指南/教程/文章?組織大型Django項目的指南

我在尋找建議,在需要開始分解初始獨特文件(models.py,urls.py,views.py)和使用超過幾十個實體時要做什麼。

回答

38

每個「應用程序」應該很小 - 一個單獨的可重用實體加上幾個關聯的表。我們每個應用程序模型大約有5個加/減2個表格。我們大部分的6種應用程序都小於5個表格。一個模型中有零表格。

每個應用程序應該被設計成一個可重用的概念。在我們的案例中,每個應用程序都是整個網站的一部分;這些應用程序可以分開移除和替換。

確實,這是我們的策略。隨着我們的要求擴大和成熟,我們可以相互獨立地刪除和替換應用程序。

讓應用程序彼此依賴是可以的。但是,依賴必須侷限於「模型」和「形式」這些顯而易見的東西。而且,應用程序可以依賴於彼此的URL中的名稱。因此,您指定的URL必須具有類似「application-view」的形式,以便reverse函數或{% url %}標籤可以正確找到它們。

每個應用程序都應該包含它自己的批處理命令(通常是通過可以由django-admin腳本中找到一個正式的命令。

最後,任何比一個簡單的模型更復雜或形式可能是共享不屬於到任一應用程序,但需要是一個單獨的共享庫,例如,我們使用XLRD,但將其部分包裝在我們自己的類中,因此它更像是內置的csv模塊。用於XLRD的封裝不是適當的部分任何一個應用程序,它是一個單獨的模塊,在Django應用程序之外。

10

我發現它有助於看一看在大型的開源Django項目中,並注意到該項目是如何實現的。 Django的網站有開源項目的一個很好的列表:

http://code.djangoproject.com/wiki/DjangoResources#Open-SourceDjangoprojects

一樣谷歌(雖然大部分都是小插件模板標籤和中間件:

http://code.google.com/hosting/search?q=label:django

當然,只是因爲一個項目做到這一點並不意味着那種方式是正確的(或者錯誤的方式),其中一些項目比其他項目更成功

最後,o真正瞭解哪些方法有效且無效的方法是自己嘗試一下。除非您自己嘗試,否則世界上的所有提示和提示都無法幫助您,但它們可能會幫助您開始正確的方向。

+0

同意...我從pinax和satchmo上學到的東西是無價的 – Jiaaro 2009-10-20 13:04:27