[ 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

原文地址:https://www.cnblogs.com/remly/p/12673845.html