当每次启动shell会话进行测试的时候,就需要导入一系列的数据库实例和模型,无聊且繁琐。为了避免一直进行重复性的操作,可以在程序中进行配置,让flask shell命令自动导入这些对象,这样在打开shell的时候就不用再导入这些对象,直接使用就可以了。
要让shell自动导入这些对象,需要使用app.shell_context_processor装饰器创建并注册一个上下文管理器,具体操作如下:
@app.shell_context_processor
def make_shell_context():
return dict(db=db, User=User, Role=Role)
这个函数就代表了一个shell上下文管理器,返回的是一个字典对象,包含了数据库实例和模型。除了默认导入的app外,shell命令会自动把这些对象导入shell:
$ flask shell
>>> app
<Flask 'hello'>
>>> db
<SQLAlchemy engine=sqlite:///Z:\NewPycharmProjects\study-flasky\data.sqlite>
>>> User
<class 'hello.User'>
>>> Role
<class 'hello.Role'>