Django网站架构

时间:2017-01-03 15:28:03

标签: django django-apps

当您忙于开发应用程序时,有时很容易被带走并编写许多模型,有些相关。然后,问题是如何在给定所有模型的情况下布局网站。假设您有以下型号:

models: M1, M2, ..., M60

然后您意识到可以将它们划分为应用程序:

apps: AP1, AP2, ..., AP12

然后,过了一段时间,您可能会意识到您有不同的项目,不同的数据库,业务逻辑,目标受众等(例如,在一个站点下有住宿,滑雪,设备租赁,电子商务等的网站)

projects: P1, P2, P3

问题是,在一个项目或相关应用程序中,在单独的项目中使用语义不相关的应用程序是否更好?

Site
|
P1 - P2 - P3
|    ...
----------------
|    |    |    |
AP1  AP2  AP3  AP4
|    ...
---------------------
|    |    |    |    |
M1   M2   M3   M4   M5

OR:

Site
|
Solo_Project
|
----------------
|    |    |    |
AP1  AP2  AP3  AP4
|    ...
---------------------
|    |    |    |    |
M1   M2   M3   M4   M5

如果是前者,那么应该如何使用meta settings.py指定ROOT_URLCONF以及settings.py通常需要处理的所有其他设置(数据库路由等)

除了Django文档,我发现Django tips: layout out an application有用(但不够)读数。

1 个答案:

答案 0 :(得分:0)

非常主观。

我认为我的规则是,如果它提供了一组可以独立于其他部分使用的功能,那么将它放在一个单独的应用程序中。

我之前的一个项目有一个大应用程序(加上我作为单独的应用程序添加的购物车类型功能)。我考虑过拆分主应用程序,但是很多查询和视图都使用了所有表格,所以最后我认为它作为一个大型应用程序更有意义,而不是将其拆分为多个应用程序而没有明显的功能区别。