gpt4 book ai didi

shell - app.shell_context_processor 装饰器没有将该函数注册为 shell 上下文函数

转载 作者:行者123 更新时间:2023-12-03 16:17:58 26 4
gpt4 key购买 nike

我在 microblog.py 中创建了以下函数文件在我的 ~/Programing/Rasa/myflaskapp/app文件夹。它创建一个 shell 上下文,将数据库实例和模型添加到 shell session 中:

from app import app, db
from app.models import User, Post

@app.shell_context_processor
def make_shell_context():
return {'db': db, 'User': User, 'Post': Post}
app.shell_context_processor解码器将该函数注册为 shell 上下文函数。但是当执行flask shell命令时,在 ~/Programing/Rasa/myflaskapp/它不会调用此函数并按预期在 shell session 中记录它返回的元素。

所以我明白了:
(MyFlaskAppEnv) mike@mike-thinks:~/Programing/Rasa/myflaskapp$ flask shell
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
App: app [production]
Instance: /home/mike/Programing/Rasa/myflaskapp/instance
>>> db
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'db' is not defined

而不是 :
(venv) $ flask shell
>>> db
<SQLAlchemy engine=sqlite:////Users/migu7781/Documents/dev/flask/microblog2/app.db>

更新:我试图检查该函数是否保存完好

但似乎不是:
>>> print(app.shell_context_processors[0]())
Traceback (most recent call last):
File "<console>", line 1, in <module>
IndexError: list index out of range

我改了 microblog.py仅用于导入 appdb
from app import app, db

@app.shell_context_processor
def make_shell_context():
return {'db': db}

我试着把 microblog.py它在 app文件夹甚至删除它,它总是相同的错误:我无法将函数注册为 shell 上下文函数。在我调用 >>> app 的同时在 Flask 上下文中,我确实有答案。

最佳答案

我通过设置 FLASK_APP 环境变量告诉 Flask 如何导入应用程序:

export FLASK_APP=microblog.py

看来成功了!

关于shell - app.shell_context_processor 装饰器没有将该函数注册为 shell 上下文函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51337758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com