[ 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 *