Python中的Flask - 关于系统的架构问题

8 投票
1 回答
1307 浏览
提问于 2025-04-16 04:20

我一直在使用Django,Django在运行视图时会把一个请求对象传递给它。乍一看,Flask的应用程序似乎是自己拥有请求,并且这个请求是被导入的(就像是一个静态资源)。我对此不太理解,现在正在努力搞清楚WSGI和Flask等相关概念。任何帮助都很感激。

1 个回答

7

在Flask中,request是一个线程安全的全局变量,所以你实际上是需要导入它的:

from flask import request

我不太确定这个特性是否和WSGI有关,因为其他一些WSGI微框架会把request作为视图函数的参数传递。Flask的“全局”request对象是它的一个特点。Flask还鼓励将用户在单次请求中有效的数据存储在一个叫做flask.g的类似对象中:

如果你想在一个请求中从一个函数共享数据到另一个函数,使用全局变量是不够好的,因为在多线程环境下它会出问题。Flask为你提供了一个特殊的对象,确保它只在当前活跃的请求中有效,并且每个请求会返回不同的值。简单来说:它做了正确的事情,就像它对待request和session一样。

撰写回答