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

时间:2014-01-09 18:28:29

标签: python flask subdomain dispatcher

我的项目中有以下结构

\ myapp
    \ app
       __init__.py
       views.py
    run.py

以下代码:

run.py

from app import create_app

if __name__ == '__main__':
    app = create_app()
    app.run(debug=True, host='0.0.0.0', port=5001)

views.py

@app.route("/")
def index():
    return "Hello World!"

_ 初始化 _。PY

from flask import Flask


def create_app():
    app = Flask(__name__)
    from app import views
    return app

我正在尝试使用factory design pattern每次创建具有不同app文件的config个对象,并且子域调度程序能够创建和路由不同的对象,具体取决于用户请求上的subdomain

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

但是我无法使其工作,似乎我的实际项目structure无法将app对象传递给我的views.py并且它会抛出{ {1}}

  

NameError:名称'app'未定义

1 个答案:

答案 0 :(得分:5)

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

<强> _ init.py _

...

def create_app(cfg=None):
    app = Flask(__name__)
    from api.views import api
    app.register_blueprint(api)
    return app

<强> 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!"