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()
原文地址:https://www.cnblogs.com/barry-cbt/p/12416621.html
时间: 2024-10-08 17:25:11