2009-10-13 53 views
12

the documentation什麼是Django中的「應用程序」?

的應用程序是一個Web應用程序,做 東西 - 例如,一個博客系統, 數據庫的公共記錄或簡單 調查程序。一個項目是 配置和應用程序的一個 特定網站的集合。一個項目可以包含多個應用程序,其中包括 。一個應用程序可以在多個項目中爲 。

但是,什麼使得一個「應用程序」的其他例子是什麼?

回答

14

是什麼讓一個應用程序(我們)是一兩件事:

某個應用程序的重複使用

該股如果我們可能要拆它關閉到別的地方使用,它是一個應用程序。

如果它有一個可重用的數據模型,它是一個應用程序。用戶配置文件:App。客戶:應用程序。客戶統計歷史(這是很難解釋,但沒有提供太多的細節):應用程序。報告:App。精算分析:App。供應商API用於數據收集:應用程序。

如果它是唯一的並且永遠不會被重用(即客戶特定),它是一個取決於其他應用程序的應用程序。數據加載是客戶特定的。每個應用程序都基於現有的一對應用程序(批量上傳和統計歷史記錄)

+0

這是有道理的,並證實我的想法。謝謝。 – 2009-10-13 23:26:12

2

如果您不打算使用Django的內置用戶框架,用戶管理可能非常適合應用。

它具有用於存儲數據的用戶界面和定義模型,並且它與Blog或Wiki應用程序(儘管信息將被共享)真的是分開的。

只要這兩個應用程序在同一個「項目」中,它們應該使用相同的數據庫設置。您應該能夠通過確保正確的模型在您嘗試使用它們的位置導入。

有關更多信息,請參閱this link

+0

好的。我想,用戶是一個糟糕的選擇。但你可以在應用程序之間共享數據? – 2009-10-13 23:16:39

+0

是的,你應該可以。編輯帖子以提供更多信息。 – 2009-10-13 23:25:57

4

Django應用程序是可重用功能的捆綁包。開始時,只需爲項目使用一個自定義應用程序很容易,但「Django方法」是將其分解爲單獨的應用程序,每個應用程序只能執行一項操作。你可以看看django.contrib的例子,這些例子是非常好的可重用應用程序。

我最近的一個例子:客戶端需要一種將CSV數據導入Django模型的方法。最簡單的方法是使用FileField添加一個模型,併爲他們正在上傳的特定格式編寫一個快速解析器。這將工作正常,直到格式改變,我不得不去解析器匹配。但這是一個常見的重複任務(導入數據),與現有的應用程序無關(管理數據),所以我自行分解了它。這個可插入的應用程序可以導入任何活動模型的數據。現在,下一次客戶端需要導入功能時,我只需將此代碼添加到installed_apps並運行syncdb即可。

這是一個判斷電話什麼時候自行打開應用程序,但對我來說,經驗法則是如果我可能再次做一些事情,我會花費額外的時間使它成爲一個通用的應用程序。這意味着我創建了一些小應用程序(一些只包含一個模板標籤),但對於未來的收益來說,這是很小的開銷。

相關問題