【问题标题】:Flask-Ask not working when using runserver pattern使用 runserver 模式时 Flask-Ask 不起作用
【发布时间】:2018-03-02 16:31:32
【问题描述】:

尝试将flask-Ask添加到使用runserver模式的现有flask网站,其中应用程序设置在init中完成,但app.run在runserver中调用

/myapp
    /myapp
    __init__.py
     views.py
     alexa_views.py
runserver.py

此模式适用于 Flask(建议用于大型应用程序),但当从 runserver.py 调用 app.run(debug=True) 时,Flask-Ask 会静默失败。 如果我在 _init__.py 中调用 app.run(debug=True) 并运行它,那么 Flask-Ask 工作正常并且 Alexa 响应。 有什么想法吗?

代码:

alexa_views.py

from flask import blueprints
from flask_ask import Ask, statement

askblueprint = blueprints.Blueprint('alexa', __name__, url_prefix='/alexa')
ask = Ask(blueprint=askblueprint)

@ask.launch
def launch():
    return statement (' it works')

初始化.py

from flask import Flask, blueprints
from myapp.alexa_views import askblueprint

app = Flask(__name__)
app.register_blueprint(askblueprint)

# lots of other unrelated configuration here - db etc

# running app here causes Flask-Ask to work!
# if __name__ == '__main__':
#     app.run(debug=True)


# late import of views to break circular import
import myapp.views

运行服务器.py

# running this starts website normally but Flask-Ask does nothing

from myapp import app

if __name__ == '__main__':
    app.run(debug=True)

【问题讨论】:

    标签: flask flask-ask


    【解决方案1】:

    我要关闭它。 这个问题确实存在于我的真实应用程序中,但这个简单的示例现在可以正常工作,因此我必须深入挖掘以找到可以演示的内容。

    比尔

    【讨论】:

    • 不管是什么问题,可能值得修复“#late import of views to break circle import”,也许通过将您的视图添加到另一个蓝图并导入它
    • 谢谢 - 我确实想通了。一旦我打开 Flask 调试日志记录,我在 400 返回旁边看到了错误的 CSRF 令牌,并发现默认情况下,所有路由都启用了 CSRF,包括 REST。修复是免除烧瓶询问路线
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    相关资源
    最近更新 更多