【问题标题】:Flask confusion with app烧瓶与应用程序混淆
【发布时间】:2013-01-23 18:05:26
【问题描述】:

我正在启动一个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 到底是什么鬼?!

【问题讨论】:

  • 这些只是名称,对象的类型应该很清楚,你能重新陈述/澄清你的问题吗?
  • from app import app 中导入了什么?
  • 我也有同样的问题,这个指南不清楚。

标签: python flask


【解决方案1】:

我认为主要的困惑在于:

from app import app

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

app = Flask(__name__)

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

from myproject import app

另外,您将导入视图

from myproject import views

【讨论】:

    【解决方案2】:

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

    app = Flask(__name__)
    

    这是关于 Flask 应用程序对象的文档:

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

    为避免混淆,我建议使用 official Flask documentation 而不是该指南。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2020-11-10
        • 2021-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-07
        相关资源
        最近更新 更多