V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
kayseen
V2EX  ›  Python

关于 flask 项目中的结构问题(前台系统和后台系统的共存问题)

  •  
  •   kayseen · 2019-11-13 15:11:51 +08:00 · 2562 次点击
    这是一个创建于 1597 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在一个项目中如果有前台系统和后台系统, 我的文件结构如下:

    -总目录:
        -后台系统文件夹:
            -model 文件夹(存放数据模型)
            -view 文件夹(存放视图文件)
        -前台系统文件夹:
            -model 文件夹(存放数据模型)
            -view 文件夹(存放视图文件)
        -后台系统启动文件.py
        -前台系统启动文件.py
    

    在后台系统中会对前台系统中的数据进行增删改查,在后台系统中直接导入使用前台系统中的 model 是会报错的, 然后我选择在后台系统中继承前台系统中的 model,然后再进行增删改查的操作,但是这种方法会触发 mysql 的事务操作,最终导致连接池溢出, 所以想请教大家,这种情况下的 flask 项目,大家是如何处理结构的啊?

    15 条回复    2019-11-26 14:07:56 +08:00
    renmu
        1
    renmu  
       2019-11-13 15:44:38 +08:00 via Android
    你在前台定义接口后给后台用,不要直接操作数据库(尽快前后端分离吧
    kayseen
        2
    kayseen  
    OP
       2019-11-13 15:50:13 +08:00
    @renmu 现在就是前后端分离啊,现在就是前端调用接口,我们需要对数据进行修改
    Latin
        3
    Latin  
       2019-11-13 16:02:03 +08:00
    https://sm.ms/image/oYPrtqfEn2MKIOy
    我还是选择黏在一起
    ipwx
        4
    ipwx  
       2019-11-13 16:07:04 +08:00
    你程序可以一个软件包写完,方便互相引用。但是你前后台系统完全可以启动两个进程或者 uwsgi host 呀~ 这有啥困难的。然后 nginx 做一下 dispatch 不就行了。

    如果前台系统要向后台系统插任务,就再上 celery 框架呀,然后队列就变成了第三个进程。
    anaf
        5
    anaf  
       2019-11-13 16:12:57 +08:00
    楼上才是正常的目录 !↑
    Vegetable
        6
    Vegetable  
       2019-11-13 16:15:23 +08:00
    我这里前台后台是共用一套 model 的,而不是定义在两个地方.
    后台存在的意义难道不是管理前台的 model 吗?这个分开我觉得不太合理
    huijiewei
        7
    huijiewei  
       2019-11-13 16:26:22 +08:00
    --core
    --modules
    ----backend
    ----frontend
    whoosy
        8
    whoosy  
       2019-11-13 16:40:11 +08:00
    @Latin 咱们是不是一个公司的? ![WechatIMG4.jpeg]( https://i.loli.net/2019/11/13/9b7eM6miOrDVdLj.jpg)
    kayseen
        9
    kayseen  
    OP
       2019-11-13 16:54:06 +08:00
    @Vegetable
    麻烦问一下你的结构,是不是下面这样的:

    ```
    -总目录:
    -后台系统文件夹:
    -view 文件夹(存放视图文件)
    -前台系统文件夹:
    -view 文件夹(存放视图文件)
    -model 文件夹(存放数据模型)
    -后台系统启动文件.py
    -前台系统启动文件.py

    ```
    yunchuanwu
        10
    yunchuanwu  
       2019-11-13 16:54:58 +08:00
    一个库的话应该用一个 models.py 解决的,migration 也好做 可以用 SQLAlchemy
    Latin
        11
    Latin  
       2019-11-13 16:56:55 +08:00
    @whoosy hhh,我们公司就我一个人用 Flask 写后台,可以加个好友,交流下技术
    kayseen
        12
    kayseen  
    OP
       2019-11-13 17:01:32 +08:00
    @Vegetable 刚刚排版乱了,看下图片

    ![image.png]( https://i.loli.net/2019/11/13/l42ZxUrWXYh8eOL.png)
    hp66722667
        13
    hp66722667  
       2019-11-14 09:50:57 +08:00
    @Vegetable 前台与后台公用同一个 model 不好吧,例如模型里面有些字段后台需要显示,前台却不能显示岂不是很麻烦
    kayseen
        14
    kayseen  
    OP
       2019-11-14 14:00:10 +08:00
    @hp66722667 我选择的是继承 model,然后重写方法
    hp66722667
        15
    hp66722667  
       2019-11-26 14:07:56 +08:00
    @kayseen 直接分开的不就完了么,本来前后台的 model 方法也很大不同
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3604 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 04:38 · PVG 12:38 · LAX 21:38 · JFK 00:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.