请教一个 Flask 的问题

2015-08-13 19:21:29 +08:00
 aaaaaaaaa

目录结构如下:

TestFlask
--init--.py(此处是下划线,下同)
views.py
run.py

其中--init--.py中代码如下:

from flask import Flask
app = Flask(--name--)

import FlaskWebProject1.views

关于第三句,在views.py中要使用app这个变量需要import这个文件,那在外层的run.py中使用,为什么直接from TestFlask import app就行了???

另外希望大家能推荐点Flask相关资料或开源项目,官方文档已看,就不说了。

在此谢过各位!

3864 次点击
所在节点    Python
11 条回复
aaaaaaaaa
2015-08-13 19:36:27 +08:00
来个人呗
hyesun
2015-08-13 19:54:27 +08:00
这个是 python 的 import 机制,而不是 flask 的原因。一个 package 的 __init__ 文件里定义的对象,是可以通过 package_name.object_name 这种方式来引入的
aaaaaaaaa
2015-08-13 19:59:31 +08:00
@hyesun 请问那在views.py中为什么不能通过先导入,再引用的方式来?比如,直接像run.py一样,直接from TestFlask import app,然后直接引用app
crazyxin1988
2015-08-13 20:02:28 +08:00
from flask import Flask
import FlaskWebProject1.views
会导致 循环引用
你的views里 还引入了这里的app
sivacohan
2015-08-13 20:02:49 +08:00
@aaaaaaaaa 那app就会发生循环引。这里init.py有一个trick,就是import而不使用。这样不会报循环引用的错误。
le0rn0
2015-08-13 20:16:16 +08:00
@crazyxin1988 你的意思是去掉import FlaskWebProject1.views ?你试过吗?这样会404好不好,别告诉我你没用过Flask
le0rn0
2015-08-13 20:57:03 +08:00
@crazyxin1988 确实404了


@sivacohan 请问能否详细说下?谢谢!
sivacohan
2015-08-13 21:13:53 +08:00
@le0rn0

flask官方文档就说了。看一下文档。或者查flask 循环引用。
crazyxin1988
2015-08-13 21:49:31 +08:00
florije
2015-08-14 07:14:49 +08:00
纯python问题,跟flask无关。
view里面要用app,你放前面加载代码时候还没有。
外层调用,当前包加载要初始化,已经有app了。
这个算是学习python最基础的东西了,基本上跟简单语法平级,建议多看看Python基础的东西。
aaaaaaaaa
2015-08-14 07:32:26 +08:00
@florije views.py是包中的文件,也就是views要使用app时这个包肯定已经加载了呀,既然加载了那就应该有app呀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/213027

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX