zoukankan      html  css  js  c++  java
  • [ flask ] 解耦models(解决models文件太臃肿的问题)

    问题描述

    用博客项目来描述,我们在models中定义了用户表(User)、文章表(Post)、通知表(Notification)、等等。随着我们开发的深入,添加的功能越来越多,到后期models文件会变得非常臃肿,维护起来很费劲。我构想把这些表分别写到不同的文件里面,达到解耦的目的。

    [ 目标项目结构 ]

    E:.
    │    
    ├─app
    │  │
    │  │  models.py      //解耦前所有的表都写在这个文件里
    │  │  extensions.py
    │  │  __init__.py
    │  │  
    │  ├─ api
    │  │      auth.py
    │  │      comments.py
    │  │      errors.py
    │  │      messages.py
    │  │      notifications.py
    │  │      ping.py
    │  │      posts.py
    │  │      tokens.py
    │  │      users.py
    │  │      __init__.py
    │  │      
    │  └─ models        //解耦后把各个表放在models文件夹下,方便维护。
    │          base.py
    │          comment.py
    │          exts.py
    │          message.py
    │          notification.py
    │          post.py
    │          user.py
    │          __init__.py

    解决方案

    1. 把各个表( base.py / comment.py / message.py / ... ) 导入到 exts.py

    from app.models.post import Post
    from app.models.notification import Notification
    from app.models.comment import Comment,comments_likes
    from app.models.user import User,followers
    from app.models.message import Message

    2. 在 __init__.py 中导入 exts.py 的所有变量

    from app.models.exts import *
    

     

    注意点

    1. 如果要引用其它表怎么办?比如User表引用Post表。

     从exts.py中导入即可。

    from app.models.exts import Post

    2.Base.py中定义了一个基类,其他表都要引用这个基类(以及在Base.py中引入的插件),如何实现呢?

      全部import进来就好

    from app.models.base import *

    项目链接

    https://github.com/LongchuanYu/myblog_flask_v2

  • 相关阅读:
    Android之快速搭建应用框架
    oracle hints merge 视图合并
    十年数据架构经验,告诉你业务化大数据中台最核心的四点
    Cinder LVM Oversubscription in thin provisioning
    Oracle 20c数据库开启原生的区块链表、AutoML以及持久化内存支持
    学习三十五
    学习三十五
    认知类和对象的关系
    认知类和对象的关系
    认知类和对象的关系
  • 原文地址:https://www.cnblogs.com/remly/p/12673845.html
Copyright © 2011-2022 走看看