Flask请求-响应循环

Posted barry-cbt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask请求-响应循环相关的知识,希望对你有一定的参考价值。

Flask请求-响应循环

要想让视图函数能够请求对象,一种直接了当的方式是将其作为参数闯入试图函数,不过这会导致应用中的每个视图函数,不过这会导致每个视图函数都多出一个参数。除了访问请求对象,如果视图函数在处理请求时还要访问其他对象,情况会变得更糟。

为了避免大量可有可无的参数把视图函数弄的一团糟,Flask使用上下文

from flask import Flask

@app.route("/")
def index():
    user_agent = request.header.get("User-Agent")
    return '<p>Your browser is {} </p>'.format(user-agent)
注意,在这个视图函数中我们把request当作全局变量使用。事实上,request不可能是全局变量。试想,在多个线程处理不同客户端发送的不同请求时,每个线程看到的request对象必然不同。Flask使用上下文让特定的变量在一个线程中全局可访问,与此同时却不会干扰其他的线程。
变量名 上下文 说明
current_app 应用上下文 当前应用的应用实例
g 应用上下文 处理请求时用作临时存储的对象,每次请求都会重设这个变量
request 请求上下文 请求对象,封装了客户端发出的HTTP请求中的内容
session 请求上下文 用户会话,值为一个字典,存储请求之间需要记住的值

没激活应用上下文之前就调用curren_app.name会导致错误,但推送完上下文就可以调用了。值的注意的是,获取应用上下文的方法是在应用实例上调用app.app_context()

以上是关于Flask请求-响应循环的主要内容,如果未能解决你的问题,请参考以下文章

Flask框架 请求与响应 & 模板语法

python 初步认识Flask

Flask 的请求与响应

flask服务器有时会截断长json响应

Flask中的http请求与响应

深入浅出Flask:服务器输出304代表什么