Python 我是否正确组织了django应用程序?
我需要将两个Django应用程序合并到一个可重用的应用程序中。两者都不是特别大,但它们肯定不是微不足道的应用程序,为了保持可读性/合理性,我试图在某种程度上将这两个应用程序分开 我可以将每个应用程序设置为一个子包(这将是实现这一目标的一种pythonic方法),或者我可以坚持Django的约定,并在每种情况下分别拆分功能 python的“子包”方法:Python 我是否正确组织了django应用程序?,python,django,structure,package,Python,Django,Structure,Package,我需要将两个Django应用程序合并到一个可重用的应用程序中。两者都不是特别大,但它们肯定不是微不足道的应用程序,为了保持可读性/合理性,我试图在某种程度上将这两个应用程序分开 我可以将每个应用程序设置为一个子包(这将是实现这一目标的一种pythonic方法),或者我可以坚持Django的约定,并在每种情况下分别拆分功能 python的“子包”方法: package |-- __init__.py |-- views.py |-- models.py # imports models f
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
虽然目前我倾向于前者(感觉轻了一点),但我的直觉告诉我,虽然两者都有效(并且都涉及导入“黑客”以符合Django的结构),但最佳选择取决于a和b的内容——具体来说,有多少代码是共享的或特定于应用程序的。在每个子目录中不停地重复_uuu_uuu_uuu.py、a.py、b.py模式是不对的
我很想知道,对于那些有更多Python经验的人来说,哪一个更合适
附言。
我知道它们可以作为两个不同的应用程序使用,但它们是如此相互依赖,现在我觉得它们应该合并!(即使除了提高单个Django应用程序的可移植性之外)扁平比嵌套好 由两个对等应用程序构建的“复合”应用程序就可以了。它工作得很好 它允许这两个组件在更大的应用程序中成为“即插即用”选项,从而促进了重用
除非迫不得已,否则不要把东西堆起来。迫使您嵌套的第一个原因是名称冲突。您没有这样的功能,因此不需要任何嵌套。我不是python方面的专家,但我总是喜欢尽可能多地分离应用程序和其他工件 对于我自己的django项目,我遵循本文中描述的方法,它需要对django进行一些调整。到目前为止,这对我很有帮助
到的直接链接在我的项目中,我经常想以某种方式组织视图和测试,因此我使用如下结构:
package
|-- __init__.py
|-- models.py # models are in one file
|-- etc. # shared stuff
|-- tests
| |-- __init__.py
| |-- tests_orders.py
| |-- tests_clients.py
| |--
| `-- etc.
|-- views
| |-- __init__.py
| |-- orders.py
| |-- clients.py
| |--
| `-- etc.
对于在一个文件中拥有查看功能的大型项目来说(对我来说)是一件痛苦的事情
这正是我正在从事的一些项目的工作原理——希望有人能发现这一点也很有用。对于外行来说,答案的可读性,你能说明哪一个是“扁平”的,哪一个是“嵌套”的,哪一个更好?好吧,禅宗指的是python代码,而不是文件结构,不是吗?