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

  • 相关阅读:
    java学习多线程之创建多线程一
    java学习之线程
    ios开发系统地图知识
    Swift3.0变化分享
    最新友盟6.1.1集成遇到的坑,自定义分享界面实现(跳转控制器做分享)
    IOS开发遇到(null)与<null>轻松处理
    友盟分享实现
    iOS 判断网络连接状态的几种方法
    GCD总结
    iOS视频边下边播--缓存播放数据流
  • 原文地址:https://www.cnblogs.com/remly/p/12673845.html
Copyright © 2011-2022 走看看