目录结构如下:
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相关资料或开源项目,官方文档已看,就不说了。
在此谢过各位!
1
aaaaaaaaa OP 来个人呗
|
2
hyesun 2015-08-13 19:54:27 +08:00
这个是 python 的 import 机制,而不是 flask 的原因。一个 package 的 __init__ 文件里定义的对象,是可以通过 package_name.object_name 这种方式来引入的
|
3
aaaaaaaaa OP @hyesun 请问那在views.py中为什么不能通过先导入,再引用的方式来?比如,直接像run.py一样,直接from TestFlask import app,然后直接引用app
|
4
crazyxin1988 2015-08-13 20:02:28 +08:00
from flask import Flask
import FlaskWebProject1.views 会导致 循环引用 你的views里 还引入了这里的app |
5
sivacohan 2015-08-13 20:02:49 +08:00 via Android
@aaaaaaaaa 那app就会发生循环引。这里init.py有一个trick,就是import而不使用。这样不会报循环引用的错误。
|
6
le0rn0 2015-08-13 20:16:16 +08:00
@crazyxin1988 你的意思是去掉import FlaskWebProject1.views ?你试过吗?这样会404好不好,别告诉我你没用过Flask
|
7
le0rn0 2015-08-13 20:57:03 +08:00
|
9
crazyxin1988 2015-08-13 21:49:31 +08:00
|
10
florije 2015-08-14 07:14:49 +08:00
纯python问题,跟flask无关。
view里面要用app,你放前面加载代码时候还没有。 外层调用,当前包加载要初始化,已经有app了。 这个算是学习python最基础的东西了,基本上跟简单语法平级,建议多看看Python基础的东西。 |