37

我正在开始一个flask项目,在我的代码中我有

from flask import Flask, render_template, abort
app = Flask(__name__)

现在到底是app什么?

我正在关注本指南,我对结构特别困惑,因为他选择了命名目录app/并且是他app/__init__.py

from flask import Flask
app = Flask(__name__)
from app import views

app/views.py

from app import app

这些都是什么app鬼?!

4

3 回答 3

38

我认为主要的困惑在于:

from app import app

你有一个__init__.py名为“app”的python包(一个包含文件的文件夹)。从这个文件夹中,您现在正在导入您在下面__init__.py文件中定义的变量“app”:

app = Flask(__name__)

将文件夹从 app 重命名为“myproject”。然后你会打电话

from myproject import app

此外,您将导入视图为

from myproject import views
于 2013-01-23T21:47:31.757 回答
14

作者通过选择与 Flask 通常的应用程序对象实例名称相同的包名称,使他的代码产生了不必要的混乱。这是您最感兴趣的一个:

app = Flask(__name__)

以下是有关 Flask 应用程序对象的文档:

http://flask.pocoo.org/docs/api/#application-object

为避免混淆,我建议使用官方 Flask 文档而不是该指南。

于 2013-01-23T18:32:52.807 回答
6

由于名称选择不佳,这确实有点令人困惑。

  • app = Flask(__name__):这app是一个WSGI应用程序,它实现了相应的接口,并且还支持 Flask 提供给我们的任何东西。
  • from app import app: 从包中准确导入该app对象app
  • from app import view:对于他在views那里导入的东西,有点神秘,我想他想确保执行视图绑定。(我宁愿在 中这样做run.py)。无论如何,这是两个模块之间的一种导入循环,至少也令人困惑。
于 2013-01-23T18:39:51.863 回答