V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
aaaaaaaaa
V2EX  ›  Python

请教一个 Flask 的问题

  •  
  •   aaaaaaaaa · 2015-08-13 19:21:29 +08:00 · 3895 次点击
    这是一个创建于 3422 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目录结构如下:

    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相关资料或开源项目,官方文档已看,就不说了。

    在此谢过各位!

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


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

    flask官方文档就说了。看一下文档。或者查flask 循环引用。
    crazyxin1988
        9
    crazyxin1988  
       2015-08-13 21:49:31 +08:00
    florije
        10
    florije  
       2015-08-14 07:14:49 +08:00
    纯python问题,跟flask无关。
    view里面要用app,你放前面加载代码时候还没有。
    外层调用,当前包加载要初始化,已经有app了。
    这个算是学习python最基础的东西了,基本上跟简单语法平级,建议多看看Python基础的东西。
    aaaaaaaaa
        11
    aaaaaaaaa  
    OP
       2015-08-14 07:32:26 +08:00
    @florije views.py是包中的文件,也就是views要使用app时这个包肯定已经加载了呀,既然加载了那就应该有app呀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3056 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:38 · PVG 21:38 · LAX 05:38 · JFK 08:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.