flask LocalProxy

面向对象里面所有带__的方法都在LocalProxy中
flask上下文管理
请求上下文 requestcontest对象ctx,封装了request,session
App上下文 封装了app/g

第三方组件 wtforms
使用
metaclass
实现原理
django和flask的区别
都是基于wsgi
一个基于传参的形式
一个上下文请求管理形式
flask
配置文件 反射 + importlib
路由系统
装饰器 @app.route()
参数 url
endpoint 反向生成url_for
methods 列表
加装饰器
endpoint默认是函数名
functools.wraps(func) + functools.partial
写路由两者方式:
装饰器
add_url_rule
session 默认存在cookie中
蓝图 目录结果的划分,特殊装饰器before after
上下文管理
threading.local 为每个线程创建单独空间,让线程和线程数据隔离,数据库连接池,为每个线程创建一个连接,内部使用threading.local
面向对象特殊方法
getattr
setattr
delattr
偏函数
单例模式,在py文件创建对象,使用该对象
请求上下文件流程:
源码流程
calll
wsgi_app
- ctx = RequestContext()
- ctx.push() 将ctx传给LocalStack对象,传给Local中存起来
怎样存 storage = {
123: {}
}
由LocalStack维护成一个栈
- 视图函数,再次获取
数据库&前端
响应式布局:
根据浏览器大小或像素不同变化让页面出现不同效果,

  • 上下文管理源码实现
from flask import Flask

app = Flask(__name__)


@app.route('/index')
def index():
    return 'Index'


if __name__ == '__main__':
    app.run()

第一阶段: 请求到来
app.call 触发wsgi_app, 实例化RequestContext对象,也就是cxt,包含request和session对象

在这里插入图片描述
在wsgi_app中, 实例化reuqest_context对象,也就是cxt,包含request和session对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
self.request = Request
拿请求把Request拿到就可以了,这里面有什么,请求就能获取什么
然后走到ctx.push

猜你喜欢

转载自blog.csdn.net/weixin_42233629/article/details/86668129