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

  • 相关阅读:
    窗体控件随窗体大小改变(包括字体大小)
    Silverlight数据加载时,等待图标显示与隐藏(Loading)
    鼠标经过时,地图上的每个城市变颜色并且有提示框
    开始博客生活
    光纤
    静态路由配置(Static Routing)
    对称加密与非对称加密
    RIP Debug 过程
    WORD 固定表头自动生成/在Word表格接续页加上重复表格标题
    RIP路由
  • 原文地址:https://www.cnblogs.com/remly/p/12673845.html
Copyright © 2011-2022 走看看