NameError:名称'app'未使用Flask定义

zot*_*t24 6 python subdomain dispatcher flask

我的项目中有以下结构

\ myapp
    \ app
       __init__.py
       views.py
    run.py
Run Code Online (Sandbox Code Playgroud)

以下代码:

run.py

from app import create_app

if __name__ == '__main__':
    app = create_app()
    app.run(debug=True, host='0.0.0.0', port=5001)
Run Code Online (Sandbox Code Playgroud)

views.py

@app.route("/")
def index():
    return "Hello World!"
Run Code Online (Sandbox Code Playgroud)

_ init _.py

from flask import Flask


def create_app():
    app = Flask(__name__)
    from app import views
    return app
Run Code Online (Sandbox Code Playgroud)

我试图每次使用不同的文件factory design pattern来创建我的app对象config,并且子域调度程序能够根据subdomain用户请求创建和路由不同的对象.

我正在关注他们谈论的Flask文档,所有这些:

但我无法使它工作,似乎我的实际项目structure没有办法将app对象扔到我的views.py投掷和它NameError

NameError:未定义名称"app"

zot*_*t24 5

在完成Miguel建议(使用Blueprint)后,一切正常,这是最终的代码,工作:

_ init.py _

...

def create_app(cfg=None):
    app = Flask(__name__)
    from api.views import api
    app.register_blueprint(api)
    return app
Run Code Online (Sandbox Code Playgroud)

views.py

from flask import current_app, Blueprint, jsonify
api = Blueprint('api', __name__)

@api.route("/")
def index():
     # We can use "current_app" to have access to our "app" object
     return "Hello World!"
Run Code Online (Sandbox Code Playgroud)