flask的from app import app

  1. 描述你的问题
    在学习flask,里面多次出现from app import app,但感觉这在不同文件里意思并不一样,究竟代表着什么?

  2. 贴上相关代码
    文件结构:

app/
--static/
--templates/
--__init__.py
--views.py
tmp/
run.py

=============================================

在__init__.py里面:
from flask import Flask //从flask模块导入Flask对象
app = Flask(__name__) //把Flask对象生成并赋给变量app
from app import views //从变量app导入views对象?app有个views对象?views不是一个文件吗?所以是从app包里导入views文件?(views和app文件不是在同一文件夹里面吗?)

×××××××××××××××××××××××××××××××××××

在views.py里面:
from app import app //这里是怎么回事?从变量app(就是Flask对象)导入app?还是从app文件夹导入app变量(views和app不是同一个文件夹里面吗?)?
@app.route('/') //下面都是通过装饰器用于建立视图函数和URL的映射关系,能理解
@app.route('/index')
def index():

return “What does 'from app import app' really mean?”

×××××××××××××××××××××××××××××××××××8

在run.py里面:
from app import app //这个因为和app文件夹处于同一目录下,所以意思就是从app包里导入app.py文件(相当于from app文件夹 导入 app.py)?如果是这样,一个文件怎么可以有run的方法,写成了app.run()??那样应该写成from app import app,先导入文件,然后再次从文件里导入app的对象,就是再写一行from app import app,结果得写两行from app import app?
app.run(debug=True)

=====================================================

  1. 已经尝试过哪些方法仍然没解决(附上相关链接)

我知道我的理解有问题,但我感觉不同文件中的from app import app不一样,但好像又是一样的。想请教如何理解,谢谢!

阅读 15.6k
4 个回答

手机码字。这里的app有两个意思,一个是app这个包,一个是flask实体对象。

能接在 from 后面的 app 都是模块名,即最外面那个文件夹 app


强烈不建议这样命名,太迷惑了

此app非彼app。不是一个东西。

新手上路,请多包涵

个人感觉, 这里的from app import app,第一个 app 指的是 目录 app 下的 __init__.py 文件,第二个 app 指代 __init__.py 中定义的 Flask 实例。

确实,app 的含义视情况而定。如from app.models import User, Role中,这里的 app 就表示 目录 app (从目录 app 下的 models.py 中导入模型 User, Role)。

划重点!!如何导入 __init__.py 中定义的对象? 不是 from __init__ import xxx,而是要from init_dir import xxx(init_dir 指代该 __init__.py 所在的目录!)

举个例子,如果你当前在 Flask 程序根目录下(~/TestApp),如何往 Python Shell 中导入 ~/app/main/__init__.py 中定义的蓝本 main ?

答案是>>> from app.main import main。这里,app 指目录 app,第一个 main 指 app/__init__.py,第二个 main 指 其中定义的蓝本 main 。

看过《Flask Web 开发》的应该能懂我的意思……

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题