当前位置: 首页 > 知识库问答 >
问题:

烧瓶应用程序,全局变量在多个文件[重复]

赵炯
2023-03-14

我正在尝试与从另一个文件导入的flask应用程序共享我在主函数中定义的变量。首先,我试图通过一个经典的全局变量来解决这个问题,但这个变量并没有给我带来任何进展,直到我无意中发现了flask的概念。g和应用程序上下文。

所以我尝试了以下方法:我在同一个目录中有两个文件,一个main。py

# main.py

import app
from flask import g

if __name__ == "__main__":
    with app.app.app_context():
        g.value = "Hello World"
    
    app.app.run(debug=True, threaded=True, host='localhost', port=5000)

还有一个应用程序。py

# app.py

from flask import Flask, g

app = Flask(__name__)

@app.route('/helloworld')
def send_response():
    return g.value

然而,当我在http://localhost:5000/helloworld我明白了

AttributeError: '_AppCtxGlobals' object has no attribute 'value'

因此,在一个文件中设置值g.value似乎没有反映在应用程序中。我是烧瓶的初学者,很可能我没有正确理解这个概念。类似的问题没有得到我可以用来解决这个问题的任何答案:烧瓶传递全局变量,python-如何在烧瓶中设置全局变量?,在烧瓶应用程序中保存全局状态

非常感谢您的帮助!

共有1个答案

长孙骏
2023-03-14

只需使用一个常规的Python模块级变量。

# app.py

g = "Example"

@app.route("/example")
def example_endpoint():
    return g
# main.py

import app

app.g = "Hello"

引用您链接的同一页:

根据需要创建和销毁应用程序上下文。当Flask应用程序开始处理请求时,它会推送应用程序上下文和请求上下文。当请求结束时,它会弹出请求上下文,然后弹出应用程序上下文。通常,应用程序上下文的生存期与请求的生存期相同。

因此,您的设置flask。请求上下文之外的g(在main.py中)不会将您的值带到任何地方。

 类似资料:
  • 问题内容: 如果我在flask中具有全局变量,并且有多个用户一次访问该站点,那么一个人会话可以覆盖另一个人会话的全局变量,还是在用户每次请求烧瓶时,flask都会创建我的站点和程序代码的唯一实例浏览器? 问题答案: 一般来说,全局变量在请求之间共享。 某些WSGI服务器可以为每个请求使用新的单独流程,但这不是扩展请求的有效方法。大多数将使用踩踏或几个子进程来分散负载,但是即使在单独的子进程的情况下

  • 问题内容: 我有2个守护程序,它们应该访问相同的变量。我为全局变量创建了第3个文件,每个守护程序都可以访问该变量。但是,当一个更改变量时,另一个仍然看到默认值。 例: glob.py 守护程序a: 守护程序b: 每次我希望我将问题弄清楚时,它将打印0,并且有人可以帮助我。如果您需要更多信息,请随时询问。 问题答案: 看起来(尽管您没有明确告诉您)您正在以一种完全独立的方式运行程序:Python解释

  • 在过去的几周里,我花了太多的时间试图让它发挥作用。我的目标是使用烧瓶框架创建一个简单的网络应用程序,但我不断收到错误,几个小时的谷歌搜索和搜索stackoverflow也没有帮助。 我正在学习一个教程,该教程要求我运行:$python3 routes.py 只有我才能得到以下错误: 回溯(最近的最后一次调用):文件“routes.py”,第1行,从flask导入flask中,呈现\u模板导入错误:

  • 我希望能够运行我的破折号应用程序从我的烧瓶应用程序,当我去一个特定的网址/破折号。然而,我得到以下错误。TypeError:视图函数没有返回有效的响应。该函数要么返回无,要么结束时没有返回语句。' flaskapp.py dashapp。派克 如果我对我的flaskapp.py做以下更改, 我得到了以下错误,AttributeError:“非类型”对象没有属性“遍历”

  • 在CentOS 6.4中,我在/var/www/html/venv文件夹中创建了python虚拟环境。然后在激活虚拟环境后,我为我的flask应用程序安装了所有必要的python库。我检查了一下,Flask库位于/var/www/html/venv/lib/python2.7/site-packages文件夹中。我已经安装并加载了mod_wsgi。现在,在我的flask应用程序中(位于/var/w

  • 我尝试使用Flask制作一个小应用程序,但经常需要重新启动应用程序才能看到结果,这是一种过分的做法。 是否有任何设置可以简单地更新应用程序而不重新启动?(类似于任何像样的PHP或Java/JSP应用程序) [编辑]通过将标志调试设置为True,应用程序的重启可以是手动的或自动的。在这两种情况下,应用程序都会重新启动。我对应用程序的无启动/重新启动感兴趣-不是手动或自动的。 最好的例子是一个PHP页

  • 2020-10-05 17:59:33,327:异常/[GET]Traceback(最近一次调用最后一次): File"/home/parshuram/. Virtualenvs/myVirtualenv/lib/python3.8/site-pack/flask/app.py",第2446行,wsgi_app响应=self.full_dispatch_request()File"/home/pa

  • 问题内容: 我的一堆JavaScript代码位于一个名为helpers.js的外部文件中。在调用此JavaScript代码的HTML内,我发现自己需要知道是否已经调用了helpers.js中的某个函数。 我试图通过定义以下内容来创建全局变量: 在我的HTML代码和helpers.js中的全局范围内。 这是我的html代码如下所示: 我想做的事可行吗? 问题答案: 您需要在包含helpers.js文