Flask原理学习笔记

知识点
  1. 配置文件
  2. 路由系统
  3. 视图
  4. 模板渲染
  5. session
    当请求刚到来:flask读取请求cookie中session对应的值,将改值解密并反序列化成字典,放入内存以便视图函数使用
    视图函数:
    @app.route('/ses')
    def ses():
        session['xxx'] = 1
        session['yyy'] = 2
        del session['yyy']
        return 'Session'
    
    请求结束时, flask会读取内存中字典的值,进行序列化并加密,写入到cookie中
  6. flash(session衍生出来的, 一次性存取)
    from flask import Flask, flash, get_flashed_messages
    
    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'chilson'
    
    @app.route('/page1')
    def page1():   
        flash('临时存储数据。。。')   
        return '数据已存'
        
    
    @app.route('/page2')
    def page2():
        mssages = get_flashed_messages()    
        return messages[0] if len(messages) else 'flash end'
    
  7. 请求和响应
  8. 特殊装饰器
  9. 蓝图
  10. 中间件
session执行流程

在这里插入图片描述

上下文管理(线程数据隔离)

请求到来的时候:
去全局字典找到对应的线程,获取ctx对象,分别将 ctx.request/ctx.session 赋值给 flask.requestflask.session

请求结束的时候:
根据当前线程的唯一标识,去全局字典移除对应的数据。

request:

a: wsgi_app(environ, start_response)
b:

ctx = RequestContext(session, request)
ctx.push()

c: LocalStack, 把ctx对象添加到Local中
d: Local

__storage__ = {
    1212: {'stack': [ctx, ]}
}
session:

a: wsgi_app(environ, start_response)
b:

ctx = RequestContext(session, request)
ctx.push()

c: LocalStack, 把ctx对象添加到Local中
d: Local

__storage__ = {
    1212: {'stack': [ctx, ]}
}

e: 通过LocalStack获取ctx中的session, 给session赋值(从cookie中读取数据) => open_session()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值