在一个项目中如果有前台系统和后台系统, 我的文件结构如下:
-总目录:
-后台系统文件夹:
-model 文件夹(存放数据模型)
-view 文件夹(存放视图文件)
-前台系统文件夹:
-model 文件夹(存放数据模型)
-view 文件夹(存放视图文件)
-后台系统启动文件.py
-前台系统启动文件.py
在后台系统中会对前台系统中的数据进行增删改查,在后台系统中直接导入使用前台系统中的 model 是会报错的, 然后我选择在后台系统中继承前台系统中的 model,然后再进行增删改查的操作,但是这种方法会触发 mysql 的事务操作,最终导致连接池溢出, 所以想请教大家,这种情况下的 flask 项目,大家是如何处理结构的啊?
1
renmu 2019-11-13 15:44:38 +08:00 via Android
你在前台定义接口后给后台用,不要直接操作数据库(尽快前后端分离吧
|
3
Latin 2019-11-13 16:02:03 +08:00
https://sm.ms/image/oYPrtqfEn2MKIOy
我还是选择黏在一起 |
4
ipwx 2019-11-13 16:07:04 +08:00
你程序可以一个软件包写完,方便互相引用。但是你前后台系统完全可以启动两个进程或者 uwsgi host 呀~ 这有啥困难的。然后 nginx 做一下 dispatch 不就行了。
如果前台系统要向后台系统插任务,就再上 celery 框架呀,然后队列就变成了第三个进程。 |
5
anaf 2019-11-13 16:12:57 +08:00
楼上才是正常的目录 !↑
|
6
Vegetable 2019-11-13 16:15:23 +08:00
我这里前台后台是共用一套 model 的,而不是定义在两个地方.
后台存在的意义难道不是管理前台的 model 吗?这个分开我觉得不太合理 |
7
huijiewei 2019-11-13 16:26:22 +08:00
--core
--modules ----backend ----frontend |
8
whoosy 2019-11-13 16:40:11 +08:00
@Latin 咱们是不是一个公司的? ![WechatIMG4.jpeg]( https://i.loli.net/2019/11/13/9b7eM6miOrDVdLj.jpg)
|
9
kayseen OP @Vegetable
麻烦问一下你的结构,是不是下面这样的: ``` -总目录: -后台系统文件夹: -view 文件夹(存放视图文件) -前台系统文件夹: -view 文件夹(存放视图文件) -model 文件夹(存放数据模型) -后台系统启动文件.py -前台系统启动文件.py ``` |
10
yunchuanwu 2019-11-13 16:54:58 +08:00
一个库的话应该用一个 models.py 解决的,migration 也好做 可以用 SQLAlchemy
|
12
kayseen OP |
13
hp66722667 2019-11-14 09:50:57 +08:00
@Vegetable 前台与后台公用同一个 model 不好吧,例如模型里面有些字段后台需要显示,前台却不能显示岂不是很麻烦
|
14
kayseen OP @hp66722667 我选择的是继承 model,然后重写方法
|
15
hp66722667 2019-11-26 14:07:56 +08:00
@kayseen 直接分开的不就完了么,本来前后台的 model 方法也很大不同
|