gpt4 book ai didi

python - 我是否正确组织了我的 Django 应用程序?

转载 作者:太空狗 更新时间:2023-10-30 03:07:43 27 4
gpt4 key购买 nike

我现在需要将两个 Django 应用程序合并为一个可重复使用的应用程序。两者都不是特别大,但它们肯定不是微不足道的应用程序,为了保持可读性/健全性,我试图在某种程度上将这两个应用程序分开。

我可以将每个应用程序设置为一个子包(这将是实现此目的的 pythonic 方式),或者我可以坚持 Django 的约定并在每种情况下分别拆分功能。

Pythonic 的“子包”方法:

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 的内容——特别是有多少代码是共享的或特定于应用程序的。在每个子目录中不断重复 __ init__.py、a.py、b.py 模式感觉不对!

我有兴趣从具有更多 Python 处理经验的人那里了解哪个更合适!

附言。我知道它们可以作为两个不同的应用程序存在,但现在它们是如此相互依赖,以至于我觉得它们应该合并! (即使不考虑单个 Django 应用程序改进的可移植性)

最佳答案

平面优于嵌套。

由两个对等应用程序构建的“复合”应用程序很好。它运行良好。

它通过允许两个组件在较大的应用程序中成为“即插即用”选项来促进重用。

除非迫不得已,否则不要嵌套。 迫使您嵌套的第一个原因是名称冲突。你没有那个,所以你真的不需要任何嵌套。

关于python - 我是否正确组织了我的 Django 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3611631/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com