【问题标题】:where to import modules in flask project在烧瓶项目中导入模块的位置
【发布时间】:2020-06-20 03:54:53
【问题描述】:

我一直在关注 Miguel grinberg 的烧瓶巨型教程和第一个“Hello World!”程序让我很困惑。

更具体地说,让我感到困惑的是从 init.py 模块中导入 routes 模块。

下面是 init.py 文件:

#__init__.py file:

from flask import Flask

app = Flask(__name__)

from app import routes
# above line is the source of confusion.

下面是 routes.py 文件

from app import app

@app.route('/')
@app.route('/index')
def index():
    return "Hello, world!"

现在,如果我理解正确的话,app 是 Fl​​ask 类的对象。当我们在 routes.py 中执行“从应用程序导入应用程序”时,我知道我们正在导入在 init.py 文件中创建的应用程序对象。

接下来的代码是为这个对象注册一个路由。

所以我的问题是为什么我们需要在 init.py 中导入这个 routes 模块?

我的意思是在路由模块中,应用程序对象已被导入,并且已在其上注册路由。所以这应该反映在 init.py 中创建的应用程序对象上。那么为什么我们需要导入它呢?

我知道如果我们删除 import routes 语句它不起作用。但想知道为什么。

编辑:虽然我有编程背景,但我是 python 新手。所以在执行项目时可能会误解python文件是如何执行的。另外我认为这与 python 作为解释语言有关。

【问题讨论】:

    标签: python flask


    【解决方案1】:

    当您在 python 中导入任何内容时,它实际上会运行您正在导入的整个文件。 __init__.py 文件没有关于路由的任何信息,因此通过导入它,您实质上是将该信息提供给应用程序对象。此外,此路由文件永远不会直接运行,因此这是实际创建视图的唯一方式。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 2021-05-16
      • 2020-02-13
      • 1970-01-01
      相关资源
      最近更新 更多