flask web development 阅读笔记

在flask应用中,全部的flask应用都必须建立一个应用实例。web服务器把它接收的来自客户端的请求经过WSGI的协议传递给这个对象以进行处理。这时候,它会提供一种叫上下文的神奇环境,它能让一些对象能够全局可见,这样你的视图函数就能够去访问这些对象作些处理,而又在同时有那么多请求时确保线程安全。python

flask里有两种上下文,应用上下文和请求上下文,这两种上下文里暴露出了4种变量:web

应用上下文
flask

current_app 活动应用程序的应用实例

应用上下文安全

g 在处理请求时临时存储数据,每次请求都会被重设

请求上下文服务器

request request对象,封装了客户端发出的http请求的内容

请求上下文session

session 用来存储值的字典,这些值在请求中是被记住的

flask在调度每一个请求前都会push这两种上下文,而请求被处理后又被移除。应用上下文被push时它对应的两个变量就能够被线程访问了,请求上下文也是同样的道理。固然,假如这些上下文没有被激活的话,访问这些变量就会引起错误了。app

举个例子:ide

>>>from flask import Flask, current_app
>>>app = Flask(__name__)
>>>current_app
Traceback (most recent call last):
...
RuntimeError: working outside of application context
>>>app_ctx = app.app_context()
>>>app_ctx.push()
>>>current_app.name
'__main__'
>>>app_ctx.pop()
相关文章
相关标签/搜索