Python 从Flask shell访问用户模型会引发NameError
我想从由Python 从Flask shell访问用户模型会引发NameError,python,flask,click,Python,Flask,Click,我想从由shell命令启动的烧瓶外壳向数据库添加一个用户。我使用的是应用程序工厂,因此我创建了自己的FlaskGroupcli:python myapp.py shell。当我尝试访问用户模型时,我得到名称错误:名称“User”未定义。如何从烧瓶外壳访问我的模型 def create_app(config_name): application = Flask(__name__) application.config.from_object(config[config_name])
shell
命令启动的烧瓶外壳向数据库添加一个用户。我使用的是应用程序工厂,因此我创建了自己的FlaskGroup
cli:python myapp.py shell
。当我尝试访问用户
模型时,我得到名称错误:名称“User”未定义
。如何从烧瓶外壳访问我的模型
def create_app(config_name):
application = Flask(__name__)
application.config.from_object(config[config_name])
db.init_app(application)
from user import user
application.register_blueprint(user, url_prefix='/user')
return application
def create_cli_app(info):
return create_app('develop')
@click.group(cls=FlaskGroup, create_app=create_cli_app)
def cli():
pass
if __name__ == '__main__':
cli()
所有的
shell
都是在加载应用程序并推送应用程序上下文的情况下启动shell。除此之外,默认情况下它与任何其他Python shell完全相同。如果要使用它们,您仍然必须导入它们,因此出现名称错误
使用decorator向shell中注入其他内容。每个修饰函数返回一个要注入的名称的dict
def create_app():
...
from myapp.users.models import User
@app.shell_context_processor
def inject_models():
return {
'User': User,
}
...
所有的
shell
都是在加载应用程序并推送应用程序上下文的情况下启动shell。除此之外,默认情况下它与任何其他Python shell完全相同。如果要使用它们,您仍然必须导入它们,因此出现名称错误
使用decorator向shell中注入其他内容。每个修饰函数返回一个要注入的名称的dict
def create_app():
...
from myapp.users.models import User
@app.shell_context_processor
def inject_models():
return {
'User': User,
}
...