我处于需要将两个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