我正在开始一个flask
项目,在我的代码中我有
from flask import Flask, render_template, abort
app = Flask(__name__)
现在究竟是什么app
?
我关注this guide并且我对结构特别感到困惑,因为他选择了名为app/
的目录并且是他的app/__init__.py
from flask import Flask
app = Flask(__name__)
from app import views
在他的app/views.py
中
from app import app
所有这些app
的内容到底是什么?!
答案 0 :(得分:29)
我认为主要的困惑在于:
from app import app
你有一个名为“app”的python包(一个包含__init__.py
文件的文件夹)。现在,您可以在此文件夹中导入您在__init__.py
文件中定义的变量“app”:
app = Flask(__name__)
将应用程序中的文件夹重命名为“myproject”。然后你会打电话给
from myproject import app
此外,您将视图导入为
from myproject import views
答案 1 :(得分:12)
通过选择与Flask通常的应用程序对象实例名称相同的包名称,作者使他的代码变得毫无疑问。这是你最感兴趣的那个:
app = Flask(__name__)
以下是Flask应用程序对象的文档:
http://flask.pocoo.org/docs/api/#application-object
为避免混淆,我建议使用official Flask documentation代替该指南。
答案 2 :(得分:4)
由于名字选择不佳,这确实有点令人困惑。
app = Flask(__name__)
:此处app
是WSGI应用程序,它实现了相应的界面,并且还支持Flask为此提供的任何内容。from app import app
:从包app
完全导入app
个对象。from app import view
:对于他在那里导入views
的内容,有点神秘,我想他想确保执行视图绑定。 (我宁愿在run.py
)这样做。无论如何,这是两个模块之间的一种导入循环,至少也是令人困惑的。