基本结构
上下文
变量名 | 上下文 | 说明 |
---|---|---|
current_app | 应用上下文 | 当前应用的应用实例 |
g | 应用上下文 | 用于临时存储 每次请求都会重置这个变量 例如钩子函数 验证用户身份 然后将临时变量 注册到g.xxx 然后传递给视图函数 |
request | 请求上下文 | 这是一个请求对象 封装了客户端发出的HTTP请求数据 |
session | 请求上下文 | 这是一个用户会话 是一个字典 用于存储请求之间需要"记住"的数据 |
- wsgi是一个多线程的模型 每次客户端的请求都会有不同的线程进行处理 一个线程对应一个request对象
- Flask使用上下文 让特定的变量在一个线程中全局可访问 这样也不会干扰其他线程
Flask在分配请求之前 会激活上下文 然后web多线程的模型 会选择一个线程进行处理 然后这个线程里可以读取这4个变量
钩子函数
响应
Flask调用视图函数后,会将其返回值作为响应的内容。
- 返回的第一个参数,多数情况下,响应就是一个简单的字符串,作为HTML页面回送客户端
- 返回的第2个参数,状态码,Flask默认设为200,需要使用不同的状态码,可以把数字代码作为第二个返回值
- 302 Found 重定向 redirect()函数
- 400 Bad Request 客户端请求的语法错误,服务器无法理
- 401 Unauthorized 请求要求用户的身份认证
- 403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
- 404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
- 500 Internal Server Error 服务器内部错误,无法完成请求
- 501 Not Implemented 服务器不支持请求的功能,无法完成请求
- 502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
- 503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
- 返回的第3个参数, HTTP响应首部组成的字典
如果不想这么麻烦 可以使用make_response()函数 生成一个响应对象 在这个响应对象中设置想要的属性即可
重定向 redirect()函数 404 使用abort()函数
渲染
jinja2变量过滤器(详细使用 查看官方文档)