没有合适的资源?快使用搜索试试~ 我知道了~
目录: 【Flask学习笔记:一】开发环境部署 【Flask学习笔记:二】Flask 入门基础知识 【Flask学习笔记:三】Flask 中的 request、response 【Flask学习笔记:四】Flask 应用和请求上下文 【Flask学习笔记:四】Flask 应用和请求上下文 Flask 从客户端收到请求时,要让视图函数能访问一些对象,这样才能处理请求。请求对象就是一个很好的例子,它封装了客户端发送的 HTTP 请求。 要想让视图函数能够访问请求对象,一种直接了当的方式是将其作为参数传入视图函数,不过这会导致应用中的每个视图函数都多出一个参数。除了访问请求对
资源推荐
资源详情
资源评论
【【Flask学习笔记:四】学习笔记:四】Flask 应用和请求上下文应用和请求上下文
目录:目录:
【Flask学习笔记:一】开发环境部署
【Flask学习笔记:二】Flask 入门基础知识
【Flask学习笔记:三】Flask 中的 request、response
【Flask学习笔记:四】Flask 应用和请求上下文
【【Flask学习笔记:四】学习笔记:四】Flask 应用和请求上下文应用和请求上下文
Flask 从客户端收到请求时,要让视图函数能访问一些对象,这样才能处理请求。请求对象就是一个很好的例子,它封装了客户端发送的 HTTP 请
求。
要想让视图函数能够访问请求对象,一种直接了当的方式是将其作为参数传入视图函数,不过这会导致应用中的每个视图函数都多出一个参数。除
了访问请求对象,如果视图函数在处理请求时还要访问其他对象,情况会变得更糟。
为了避免大量可有可无的参数把视图函数弄得一团糟, Flask 使用上下文临时把某些对象变为全局可访问。
有了上下文,便可以像下面这样编写视图函数:
from flask import request
@app.route('/')
def index():
user_agent = request.headers.get('User-Agent')
return '
Your browser is {}
'.format(user_agent)
在这个视图函数中我们把 request 当作全局变量使用。事实上,request 不可能是全局变量。在多线程服务器中,多个线程同时处理不同客户端发
送的不同请求时,每个线程看到的 request 对象必然不同。Flask 使用上下文让特定的变量在一个线程中全局可访问,与此同时不会干扰其他线程。
在 Flask 中有两种上下文:应用上下文应用上下文和请求上下文请求上下文
变量名变量名 上下文上下文 说明说明
current_app 应用上下文 当前应用的应用实例
g 应用上下文 处理请求时用作临时存储的对象,每次请求都会重设这个变量
request 请求上下文 请求对象,封装了客户端发出的 HTTP 请求中的内容
session 请求上下文 用户会话,值为一个字典,存储请求之间需要 ‘记住’ 的值
Flask 在发送请求之前推送应用和请求上下文,请求处理完成后再将其删除。应用上下文被推送后,就可以在当前线程中使用 current_app 和 g 变量。
类似的,请求上下文被推送后,就可以使用 request 和 session 变量。如果使用这些变量时没有激活应用上下文或请求上下文,就会导致错误。
简单的画一个原理图:
资源评论
weixin_38645335
- 粉丝: 3
- 资源: 920
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功