Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我是否正确组织了django应用程序?_Python_Django_Structure_Package - Fatal编程技术网

Python 我是否正确组织了django应用程序?

Python 我是否正确组织了django应用程序?,python,django,structure,package,Python,Django,Structure,Package,我需要将两个Django应用程序合并到一个可重用的应用程序中。两者都不是特别大,但它们肯定不是微不足道的应用程序,为了保持可读性/合理性,我试图在某种程度上将这两个应用程序分开 我可以将每个应用程序设置为一个子包(这将是实现这一目标的一种pythonic方法),或者我可以坚持Django的约定,并在每种情况下分别拆分功能 python的“子包”方法: package |-- __init__.py |-- views.py |-- models.py # imports models f

我需要将两个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
虽然目前我倾向于前者(感觉轻了一点),但我的直觉告诉我,虽然两者都有效(并且都涉及导入“黑客”以符合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代码,而不是文件结构,不是吗?