为什么`从. importviews`可以解决Flask中的循环导入吗? [复制]

2024-04-17

我从中学习更大的应用 http://flask.pocoo.org/docs/0.10/patterns/packages/在这个文档中,它说:“所有视图函数(顶部带有route()装饰器的函数)都必须导入到init.py 文件。不是对象本身,而是它所在的模块。"
我不知道为什么当我这样做时应该:from . import views,它成功了。虽然from views import *也能很好的工作。
我这样组织这些文件:

myapplication/
  runner.py
  myflask/
    __init__.py
    views.py
    templates/
    static/
    ...

跑步者.py:

from testFlask import app
app.run()

myflask/__init__.py:

from flask import Flask
app = Flask(__name__)
from . import views # why this can work????

myflask/views.py:

from . import app
@app.route('/')
def index():
    return 'Hello World!'

我运行它:

$ cd myapplication
$ python runner.py

运行这个 Flask 应用程序就可以了。不过我想知道为什么from . import views可以解决这个问题圆导入烧瓶有问题吗?为什么医生说:不是对象本身,而是它所在的模块????

但是,当我这样做时:

#some_dir/
#  application.py
#  views.py

#application.py
from flask import Flask
app = Flask(__name__)
import views # it doesn't work
# from views import * # it works
app.run()

#views.py
from application import app
@app.route('/')
def index():
    return 'Hello World!'

#run it
$ python application.py

这不起作用。


这是循环导入。但在您的情况下,可能有问题的变量(app)已经在导入的脚本中定义,因此导入只会导致第一个“app”实例被导入的“app”实例覆盖。这没有任何实际作用。

有关此循环导入情况的详细信息,请阅读此post https://stackoverflow.com/questions/22187279/python-circular-importing.

如果您想遵循大型烧瓶应用程序的模式,您应该查看蓝图 http://flask.pocoo.org/docs/0.10/blueprints/ and 应用工厂 http://flask.pocoo.org/docs/0.10/patterns/appfactories/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么`从. importviews`可以解决Flask中的循环导入吗? [复制] 的相关文章

随机推荐

  • 简单注入器从命名空间注册所有服务

    我的服务接口的命名空间为Services Interfaces 服务接口的实现有一个命名空间Web UI Services 例如 我有 2 个服务实现 IUserService 需要注册到UserService ICountryServic
  • Delphi:如果我在项目中使用包,为什么“使用调试 DCU”会变得无效?

    我正在构建一个使用 JVCL 插件系统的项目 该系统依赖于运行时 Delphi 包 自从我将它添加到我的项目中后 调试就变成了一场噩梦 因为我不再能够单步跟踪源代码任何 VCL 或 RTL 单元 它们在调试器中都被标记为灰点 当相关函数出现
  • JavaScript 事件时间戳不一致

    我注意到 当我单击站点上的一个元素时 Firebug 在事件处理程序中将 e timeStamp 报告为 9 位数字 例如 866523917 而当我单击另一元素时 Firebug 在该处理程序中将 e timeStamp 报告为一个 16
  • WPF查找控件

    我在 WPF 页面上用过程代码创建了一个网格 现在我想引用该网格 Grid grid Grid This FindName myGridName 不起作用 有想法吗 当您在代码中创建元素时 还需要调用 RegisterName 方法以允许
  • 使用 jQuery AJAX 从 Laravel 5 中的联系表单发送电子邮件

    我在 Laravel Blade 中有联系表 div ul foreach errors gt all as error li error li endforeach ul Form open array route gt contact
  • Python有字符串“包含”子字符串的方法吗?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我正在寻找一个string contains or string indexofPyth
  • 如何使用 API 创建 GitHub Gist?

    通过查看 GitHub Gist API 我了解到可以为匿名用户创建 Gist 而无需任何 API 密钥 身份验证 是这样吗 我找不到以下问题的答案 创建时是否有任何限制 要点数量 等 有没有任何示例可以让我从表单文本输入字段发布代码来创建
  • pandas.to_datetime 时间字符串格式不一致

    我正在尝试转换 a 的索引pandas DataFrame从字符串格式到日期时间索引 使用pandas to datetime 导入熊猫 In 1 import pandas as pd In 2 pd version Out 2 0 10
  • size_t 是字长吗?

    Is size t编译代码的机器的字长 用 g 解析 我的编译器视图size t as an long unsigned int 编译器内部是否选择大小size t or is size t实际上是在某些预处理器宏中的 typedefstd
  • 如何解析此 Flickr 响应?

    我从 Flickr 的 api 站点中的示例响应中得到了这一点 jsonFlickrApi method content flickr test echo format content json api key content 8038f7
  • Play框架2.0.1不断尝试演化出错误的数据库类型

    我正在开发部署在 openshift DIY 应用程序上的 play 2 0 1 应用程序 我在数据库方面遇到了麻烦 因为游戏一直试图发展错误的数据库 我有一个 mysql 数据库 并且 play 创建一个 H2 数据库演化脚本 这是脚本
  • 将 uri 保存到共享首选项并使用媒体播放器播放

    这是我用来将 Uri 的字符串表示形式保存到 SharedPreferences 的代码 public void onActivityResult int requestCode int resultCode Intent data sup
  • Java 8 中使用了哪个 JAXB 版本?

    JAXB Java Architecture for XML Binding 已作为 Maven 工件发布 尽管它在 Java 8 以及具有选项的 Java 9 10 之前与 JRE 捆绑在一起 我的问题是 Maven Central 上的
  • 计算时间长

    这是我上一个问题的链接 它引导我找到了这个问题 C 嵌套 foreach 循环优化 https stackoverflow com questions 7729231 c nested foreach loop optimization 计
  • 为什么服务器控件在放置在内容标记内时会带有下划线?

    我有一个网络内容表单 其中包含Div以及各种服务器控件 例如DropDownList 当我运行该应用程序时 它运行良好 没有任何错误 但当我查看 HTML 源代码时 服务器控件带有红色下划线 将鼠标移过来时 说 DropDownList 会
  • Visual C# 2010 Express:为新类指定默认访问修饰符?

    每当我使用 Visual Studio 2010 Express C 创建新类时 它都会创建不带访问修饰符的新类 十分之九我希望我的新课程公开 如何让 Visual Studio 默认创建带有 public 修饰符的空类模板 诀窍是创建一个
  • 删除 numpy 数组的重复行[重复]

    这个问题在这里已经有答案了 如何删除二维的重复行numpy array data np array 1 8 3 3 4 1 8 9 9 4 1 8 3 3 4 答案应该如下 ans array 1 8 3 3 4 1 8 9 9 4 如果有
  • HSQLDB服务器模式用户名/密码

    如果我使用 Java 代码在服务器模式下启动 HSQLDB 则服务器启动不会出现任何问题 但是 当我尝试通过 Java 代码或通过 HSQLDB DatabaseManagerSwing 连接到相同的数据库时 我无法连接 我在仅内存模式下使
  • 通过API服务端点消费来自Kafka主题的消息

    目前 我有一个 API 服务端点 用 netcore6 C 编写 它将接受消息对象并将其保存到数据库 然后将该消息发布到 kafka topic 2 如何利用我的 API 服务端点始终监听 观看并连接到 kafka topic 1 一旦新消
  • 为什么`从. importviews`可以解决Flask中的循环导入吗? [复制]

    这个问题在这里已经有答案了 我从中学习更大的应用 http flask pocoo org docs 0 10 patterns packages 在这个文档中 它说 所有视图函数 顶部带有route 装饰器的函数 都必须导入到init p