2013-10-13 44 views
23

我正在使用Django創建我的第一個真實網站,但我仍在努力理解項目和應用程序之間的差異。Django世界中的項目和應用程序有什麼區別?

例如,我的網站是一個體育新聞網站,其中將包含文章,排名表和「裝置和結果」等部分,我的問題是這些部分中的每一個應該放在整個項目中的單獨應用程序中?這種情況下的最佳做法是什麼?

+2

您可以通過多種方式來組織項目。但是一個應用程序通常是您的項目的一個半包含的部分。例如。在頭版的民意調查應用程序。然而,就您的情況而言,這些文章可能包含(例如)評論,這些評論取決於您的結構,可能僅包含在文章應用程序中。沒有金色子彈。如果你想重複使用它去一個單獨的應用程序,否則它取決於。另見:http://stackoverflow.com/questions/4879036/django-projects-vs-apps – EWit

+0

http://stackoverflow.com/questions/11216829/django-directory-structure/11222631#11222631 –

+0

這是一個鏈接django文檔:https://docs.djangoproject.com/en/1.8/ref/applications/#projects-and-applications – guettli

回答

27

一個項目指的是整個應用程序及其所有部件。

一種應用是指應用程序的一個子模塊。希望它是自包含的,與項目中的其他應用程序沒有交織在一起,理論上說,您可以將其提取出來並放入另一個項目中,而不需要進行太多或任何修改。一個應用程序通常有它自己的models.py(它實際上可能是空的)。你可以把它看作一個python模塊。

因此,對於您的示例項目是網站,所以有對文章的應用你可能會構建它,和應用的排名表,以及固定裝置和結果的應用應用爲...

我覺得要記住的主要事情是應用之間相互依存的程度。有一個在走極端,因爲這一切都一個項目沒有任何意義,但更多的交織兩個應用程序是 - 這樣,這將是大量的工作,以重新使用另一個項目是應用程序 - 那麼更有可能的應用會更好合並或附上。

8

理想情況下,你的項目應該由應用組成。這就是爲什麼當使用命令行時,您創建一個項目,稍後再爲該項目添加應用程序。

應用程序,旨在使模塊化到您的項目。例如,如果你建立一個articles app理想,您可以在體育新聞項目中使用它,並在一個新的項目,它需要以最小的或不修改其settings重新使用它 - 說博客項目,例如。

應用程序是一款旨在重複使用的軟件。您的項目僅限於您的特定需求。

看看Django Project Structure。它可能會讓您對組織Django項目的最佳實踐有所瞭解。

也有一些博客文章在谷歌搜索,解決這個話題:

+0

Django項目結構鏈接已死亡。你碰巧知道它去了哪裏? – dsjoerg

+0

@dsjoerg謝謝你讓我知道。剛更新了答案。 –

相關問題