在Flask中,可以使用create_app()模式导入视图而无需使用蓝图吗?

问题描述 投票:0回答:1

我有一个非常小的Flask应用,其布局如下:

tinker/
      main.py
      /my_package
              init.py
              views.py

当我修补时> python main.py一切运行正常。以下是每个文件的内容:

main.py:

from my_package import app
app.run()

my_package / init。py:

from flask import Flask

app = Flask(__name__)
from my_package import views

my_package / views.py:

from my_package import app

@app.route('/')
def home():
    return 'Ola!!!!!'

虽然以上所有代码在我尝试通过使用一个create_app()代码模式进行略微修改时都可以正常运行,如下所示,views.py引发以下异常:“ ImportError:无法从'my_package导入名称'app' '“有没有不用蓝图来解决问题的方法?

main.py:

from my_package import create_app
app = create_app()
app.run()

my_package / init。py:

from flask import Flask

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

my_package / views.py:

from my_package import app

@app.route('/')
def home():
    return 'Ola!!!!!'
flask view python-import
1个回答
0
投票

init.py需要重命名为__init__.py

app = Flask(__name__)移到create_app方法之外

views.py中更改为from . import app

© www.soinside.com 2019 - 2024. All rights reserved.