烧瓶与app混淆

时间:2013-01-23 18:05:27

标签: python flask

我正在开始一个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的内容到底是什么?!

3 个答案:

答案 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__):此处appWSGI应用程序,它实现了相应的界面,并且还支持Flask为此提供的任何内容。
  • from app import app:从包app完全导入app个对象。
  • from app import view:对于他在那里导入views的内容,有点神秘,我想他想确保执行视图绑定。 (我宁愿在run.py)这样做。无论如何,这是两个模块之间的一种导入循环,至少也是令人困惑的。