烧瓶与app混淆

kas*_*rhj 31 python flask

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

from flask import Flask, render_template, abort
app = Flask(__name__)
Run Code Online (Sandbox Code Playgroud)

现在究竟是app什么?

我下面这个指南,我感到特别困惑的结构,因为他已经选择了有目录中名为app/是他的app/__init__.py,他有

from flask import Flask
app = Flask(__name__)
from app import views
Run Code Online (Sandbox Code Playgroud)

并在他的app/views.py

from app import app
Run Code Online (Sandbox Code Playgroud)

所有这些都到底是怎么回事app?!

cod*_*eek 32

我认为主要的困惑在于:

from app import app
Run Code Online (Sandbox Code Playgroud)

你有一个__init__.py名为"app" 的python包(一个带文件的文件夹).从此文件夹中,您现在要导入下面在__init__.py文件中定义的变量"app" :

app = Flask(__name__)
Run Code Online (Sandbox Code Playgroud)

将应用程序中的文件夹重命名为"myproject".然后你会打电话

from myproject import app
Run Code Online (Sandbox Code Playgroud)

此外,您将导入视图

from myproject import views
Run Code Online (Sandbox Code Playgroud)


ʇsә*_*ɹoɈ 13

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

app = Flask(__name__)
Run Code Online (Sandbox Code Playgroud)

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

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

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


ber*_*eal 6

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

  • app = Flask(__name__):这app是一个WSGI应用程序,它实现了相应的接口,并且还支持Flask在此之上提供给我们的一切。
  • from app import appapp从包中精确导入该对象app
  • from app import view:对于他要导入的内容views,有些神秘,我想他想确保执行了视图绑定。(我宁愿在中这样做run.py)。无论如何,这是两个模块之间的一种导入循环,至少也令人困惑。