2013-10-19 227 views
3

我目前正在開發一個django項目。我在django中並不是全新的東西,但是在確定如何組織一些文件的最「方法」方面遇到一些困難。Django,項目結構

我有一些計算東西的類,可以從manage.py的cli和webservice應用程序中使用。這些計算使用我的核心應用程序中的模型並調用數據庫。

我面對的問題是我無法確定放置這些源文件的位置。

我不想把它們放在'lib'文件夾中。我認爲這個文件夾中的模塊將是django獨立模塊。

目前,該模塊是在我的應用程序的模型。但由於它沒有定義任何新的結構,我不認爲它是最乾淨的方式。

任何意識到有一個乾淨的結構,尊重'Django的生活方式'?

感謝

回答

1

如果模塊獨立於Django的,那麼它應該是一個獨立的Python包,完成一個setup.py安裝它。 Django模型和使用它的webservices可以像任何其他外部依賴項一樣導入。

如果模塊依賴於你的Django應用程序,那麼它應該在應用程序的目錄中。如果它沒有定義新的模型,那麼它不應該在models.py

這是回答您的問題嗎?

+0

它或多或少地回答它。這個模塊是應用程序的一部分',使用django模型機制,但不是django web元素(視圖,模板,...) –

+0

如果它使用應用程序的模型,那麼我認爲它在應用程序的目錄中很好。不在'models.py'中,而是在另一個文件中,因爲它沒有定義模型,就像你說的那樣。 – janos

5

問題是,這樣做的最「djangonic」的方式是不都具有「核心應用程序」。您應該努力將功能分成單獨的應用程序。我完全知道這並不總是微不足道的。

但假設您正在爲一所學校設計一個Intranet網站。您將有一個應用程序處理學生的帳戶,另一個應用程序生成時間表,另一個應用程序生成時間表,另一個應用程序生成內部留言板等。每個應用程序定義自己的模型(沒有「項目級模型」),但應用程序可以導入每個其他模型(所以留言板帖子可以有一個ForeignKey字段指向學生的「學生」應用程序)。沒有必要爲「主」或「核心」應用程序(參見:James Bennett's "writing reusable Django applications" presentation從DjangoCon)

然後,您可以把您的管理命令在management/commands目錄中的應用程序,命令處理的。例如,如果一個命令從數據庫中刪除舊學生,它將進入students應用程序內的management/commands

+0

是的,我是新的。我剛剛說'核心'應用程序,因爲我不想提供有關該項目的不相關細節。但是,感謝您的鏈接:) –