我處於需要將兩個Django應用程序合併到一個可重用應用程序的情況。它們都不是特別大,但它們肯定不是微不足道的應用程序,爲了保持可讀性/完整性,我試圖讓這兩個應用程序在一定程度上分開。我是否正確地組織了我的django應用程序?
我可以將每個應用程序設置爲一個子包(這可能是實現這一目標的一種pythonic方式),或者我可以堅持Django的約定,並在每種情況下分別分開功能。
一個Python化「子包」的方法:
package
|-- __init__.py
|-- views.py
|-- models.py # imports models from both sub-packages
|-- tests.py # imports TestCase instances from both sub-packages
|-- etc. # shared stuff
|-- a
| |-- __init__.py
| |-- views.py
| |-- models.py
| |-- tests.py
| `-- etc. # a-specific code
`-- b
|-- __init__.py
|-- views.py
|-- models.py
|-- tests.py
`-- etc. # b-specific code
或者更直接地安撫神靈的Django:
package
|-- __init__.py
|-- views
| |-- __init__.py
| |-- a.py
| `-- b.py
|-- models
| |-- __init__.py # imports models from a and b
| |-- a.py
| `-- b.py
|-- tests
| |-- __init__.py # imports TestCase instances from a and b
| |-- a.py
| `-- b.py
`-- etc. # shared/additional files
雖然我傾向於前者,此刻瘦(這感覺我的直覺告訴我,雖然兩者都工作(並且都涉及導入'hacks'以符合Django的結構),但最好的選擇取決於a和b的內容 - 具體來說,代碼是多少共享或app-具體。在每個子目錄中不斷重複__init__.py,a.py,b.py模式並不合適!
我很想知道哪些更適合於處理Python的經驗豐富的人!
ps。 我知道他們可以作爲兩個不同的應用程序生活,但他們如此相互依賴,現在我覺得他們應該合併! (即使除了改進的單個Django應用程序的可移植性)
爲了提高外行的答案的可讀性,你能否清楚哪一個是'扁平'的,哪一個是'嵌套'的,哪一個更好? – thomaspaulb 2013-05-08 15:11:58
Afaik禪宗是指python代碼,而不是文件結構,不是嗎? – dietbacon 2017-03-15 13:08:23