Python中的Flask - 关于系统的架构问题
我一直在使用Django,Django在运行视图时会把一个请求对象传递给它。乍一看,Flask的应用程序似乎是自己拥有请求,并且这个请求是被导入的(就像是一个静态资源)。我对此不太理解,现在正在努力搞清楚WSGI和Flask等相关概念。任何帮助都很感激。
1 个回答
7
在Flask中,request是一个线程安全的全局变量,所以你实际上是需要导入它的:
from flask import request
我不太确定这个特性是否和WSGI有关,因为其他一些WSGI微框架会把request作为视图函数的参数传递。Flask的“全局”request对象是它的一个特点。Flask还鼓励将用户在单次请求中有效的数据存储在一个叫做flask.g的类似对象中:
如果你想在一个请求中从一个函数共享数据到另一个函数,使用全局变量是不够好的,因为在多线程环境下它会出问题。Flask为你提供了一个特殊的对象,确保它只在当前活跃的请求中有效,并且每个请求会返回不同的值。简单来说:它做了正确的事情,就像它对待request和session一样。