2011-09-01 312 views
1

我想從Rails切換到Django,拓寬了我的思路,並且在我的腦海裏浮現出一個問題。Django Apps究竟是什麼

我的Rails應用程序非常混亂,因爲我的基於愛好的開發方法是一種修補和粘連的應用程序。我很早就看到,Django在項目和應用程序之間進行了分工。根據他們的網站,一個項目由許多應用程序組成,一個應用程序可用於許多項目。

這讓我很感興趣,因爲這會讓我的網站的區域之間的界限更加清晰。我試圖找到更多的例子和信息,但我無法回答我的問題,它是:

這樣的應用程序有多大/小?他們能夠/應該密切相互作用嗎?

例如,聰明的做法是有一個應用程序處理用戶的配置文件,另一個應用程序處理來自這些用戶的博客文章和評論? (在我的網站中,用戶可以擁有多個不同配置文件的博客)。還是他們的意思是用於其他方面?

回答

6

一個django應用程序是蟒蛇包的花哨名稱。真的,就是這樣。將django應用程序與其他python軟件包區分開來的唯一方法是,它有意義的出現在settings.pyINSTALLED_APPS列表中,因爲它包含了可以被其他django自動發現的模板,模型或其他功能特徵。

一個好的django應用程序只會做一件事,做得很好,並且不會與任何可能使用它的應用程序緊密耦合。遵循此慣例的contrib名稱空間中的django提供了各種各樣的應用程序。

在您的示例中,設計應用程序的一個好方法是爲用戶配置文件(或使用許多現有配置文件應用程序之一),一個博客帖子應用程序(或許多已經這樣做的應用程序之一)一個用於評論的應用程序,與博客文章分開(再次,您可以使用現有應用程序進行此操作),最後是一個將三者結合在一起的非常小的應用程序,因爲它們不直接相互依賴。

+0

我經常想知道的一件事是,如果我創建了一堆模型,並且想要創建自己的管理站點(而不是重用現有的站點),有一個公共站點並且有一個API,應該我將模型創建爲一個應用程序,其他人作爲單獨的應用程序創建?那麼我可以在其他人之間共享模型應用程序,並根據需要從不同的主機提供它們? – shawnwall

0

一個項目基本上是在您的項目住...在你的項目的地方您設置您的網址,項目設置等

的應用程序定義了自己的數據模型和視圖要在項目中使用。如果你喜歡,你可以在項目之間移動它們。

我強烈建議從Django網站上運行tutorials,因爲它們會告訴你什麼是項目和應用程序,如何管理兩者,如何使用管理面板,如何使應用程序可用於多個項目等。 。

0

門戶=一個Django項目

一個廣告系統,相冊,產品目錄=應用

1

使用應用程序的是讓他們可重複使用的目的。 Django讚了DRY principle DRY代表DO NOT repeat yourself

應用程序應該儘可能小,並且鬆散耦合。所以,一個應用程序不應該需要另一個應用程序才能正常工作。 Django建議爲每個表格編寫一個應用程序(當然,並非總是如此,但只要想要擴展應用程序,就一定需要將表格分配到一對應用程序,否則您將很難維護您的應用程序碼。)

例如,您可以爲用戶,銷售應用程序,評論應用程序和文章應用程序創建應用程序。維護你的代碼會更容易,如果你做得對,你可以在其他project中使用該應用程序,並在應用程序中進行一些修改(如果有的話)。

Project的是,彙編app的。用戶應用程序,文章應用程序,評論應用程序可以組合成一個項目,或換句話說,一個網站。

如果你想學習Django的,我建議你看看:

http://www.djangobook.com/

http://docs.djangoproject.com/


一個建議的話,,在任何情況下,複製/糊。不僅你的代碼有很大的失敗的機會,但你不會知道代碼在做什麼。如果你打算在你的項目中使用別人代碼,至少輸入他們,這會讓你明白代碼在做什麼,或者至少它會給出一個想法。

編寫自己的代碼對於維護總是更好,但這並不意味着您應該重塑世界,您可以使用庫,查看他們的文檔以正確使用它。

文檔,教程是你最好的朋友。

祝你好運。