1 |
|
请求上下文
根据_RequestContext上下文对象的定义,可以发现,在构造这个对象的时候添加了和Flask应用相关的一些属性:
app ——上下文对象的app属性是当前的Flask应用;
url_adapter ——上下文对象的url_adapter属性是通过Flask应用中的Map实例构造成一个MapAdapter实例,主要功能是将请求中的URL和Map实例中的URL规则进行匹配;
request ——上下文对象的request属性是通过Request类构造的实例,反映请求的信息;
session ——上下文对象的session属性存储请求的会话信息;
g ——上下文对象的g属性可以存储全局的一些变量。
flashes ——消息闪现的信息。
1 |
|
在上下文对象中处理请求的过程分为以下几个步骤:
在请求正式被处理之前的一些操作,调用preprocess_request()方法,例如打开一个数据库连接等操作;
正式处理请求。这个过程调用dispatch_request()方法,这个方法会根据URL匹配的情况调用相关的视图函数;
将从视图函数返回的值转变为一个Response对象;
在响应被发送到WSGI服务器之前,调用process_response(response)做一些后续处理过程;
调用response(environ, start_response)方法将响应发送回WSGI服务器。关于此方法的使用,可以参考:Werkzeug库——wrappers模块;
退出上下文环境时,LocalStack会清理当前线程/协程产生的数据(请求上下文对象)。