一、session

      session和cookie的原理和区别:

cookie是保存在浏览器上的键值对
             session是存在服务端的键值对(服务端的session就是一个大字典,字典中是随机字符串)(session与request原理相同)(session原理跟上下文也有关系)
             session依赖于cookie存在
             session流程
                 当请求第一次进来,生成随机字符串
                  -发给用户cookie
                  -保存到session字典中时
                  它调用stark将随机字符串和对应的值放到local
                视图函数
                 -使用时导入用top(它拿的是session)
                     session=LocalProxy(partile(_lookup_req_object,'session '))
               请求处理完毕:
                     内存处理完毕后,将session做持久化(session存到数据库,存到Redis,存到加密的cookie中)

二、session源码解析     

1.先执行Flask的__call__方法 ,调用出来wsgi_app,它先做request的上下文做完,请求刚进来到push中,它先处理request将请求相关的数据,然后添加到了local中,
                 紧接着处理session(将RequestContext对象(request,session)添加到local中),request(将request信息封装到Request(environ)对象并复制给requestContext 对                       象),然后获取cookie中的随机字符串,检验是否有,没有就生成。根据随机字符串,获取服务端session保存的值。把session放到内存中,
                 执行wsgi_app方法下面的视图函数。执行完视图函数返回到full_dispatch_requesthong ,触发只执行一次的装饰器中(触发Flask信号),
                 执行完这个装饰器,紧接着执行下面的特殊的装饰器,如果这些特殊装饰器没有返回值,那么rv=None,如果有返回值,页面时就显示这个返回值,
                 如果没有返回值,触发执行那个视图函数,拿返回值。请求执行完返回后,调用finalize_request,对它的返回值进行封装。

 如何处理的requestctx = self.request_context(environ)将request信息封装到Request(environ)对象并复制给requestContext 对象class RequestContext:def __init__(self, app, environ, request=None):self.app = appif request is None:request = app.request_class(environ)self.request = requestself.url_adapter = app.create_url_adapter(self.request)self.flashes = Noneself.session = None如何处理的sessionclass RequestContext:def push(self):将RequestContext对象(request,session)添加到local中_request_ctx_stack.push(self)
刚开始处理session
#return app.session _interface.open_session(self,request)
#app.session _interface=SecureCookieSessionInterface()self.session = self.app.open_session(self.request)if self.session is None:self.session = self.app.make_null_session()           

三、Flask和Django的区别  

请求相关的数据

-Django:参数

-Flask:    基于Local,LocalStark对象

多个请求进来会不会混淆

-单线程

-多线程

-协程

解决: from greenlet import getcurrent as get_ident

转载于:https://www.cnblogs.com/moning/p/8455511.html

flask-session总结相关推荐

  1. session、flask session知识的相关收集

    1.打开两个浏览器窗口访问应用程序会使用同一个session还是不同的session session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的ses ...

  2. Flask session

    session会话,是指将用户的信息存在服务器端.不同的框架有不同的实现方式. 在flask中,形式上是操作session对象,本质上还是将数据存在了cookie中 flask-session可以设置 ...

  3. Flask session详细用法

    Flask session概念解释 session是基于cookie实现的,保存在服务端的键值对,形式为{随机字符串:'xxxxxx'},同时在浏览器中的cookie中也会保存相同的随机字符串,用来再 ...

  4. flask session伪造

    通过CTF题目进行学习 首先打开题目,查看源代码发下如下注(提)释(示) 看到这个,有经验的大佬们估计可以猜到,八成这题就是要伪造admin登录 习惯性尝试一波弱口令, admin/admin adm ...

  5. Flask session API

    1.首先设置Flask.secret_key或者配置SECRET_KEY 2.flask的session的信息保存在cookie里,默认key是session,通过SESSION_COOKIE_NAM ...

  6. flask session permanent

    在设置了session.permanent =True 后,它也会被保存在cookie中,key 是 _permanent .如果不清除这个cookie,即使你在以后没有设置为True, sessio ...

  7. Flask一:安装初始,return方式,Request,Jinja2,session

    一:安装和初始 1.Flask 安装 + 启动from flask import Flaskapp = Flask(__name__) # 实例化flask对象 # __name__ 多app应用,分 ...

  8. python客户端修改session_python中flask的Session设置的方法介绍

    本篇文章给大家带来的内容是关于python中flask的Session设置的方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 什么是Session? cookie: 客户端浏览 ...

  9. 【Python】Flask框架系列(三):session和cookie操作、get/post请求、钩子函数

    在Flask中操作session 示例:设置session的过期时间 完整版 旧版 设置session的过期时间 示例 # encoding: utf-8from flask import Flask ...

  10. flask总结之session,websocket,上下文管理

    1.关于session flask是带有session的,它加密后存储在用户浏览器的cookie中,可以通过app.seesion_interface源码查看 from flask import Fl ...

最新文章

  1. 死锁产生条件-不剥夺条件
  2. Java并发:明白Synchronized实现原理,锁什么?
  3. 迁移到阿里云后,NTKO控件报存word 报文件存取错误,请检查网络传输。
  4. Java黑皮书课后题第5章:*5.1(统计正数和负数的个数然后计算这些数的平均值)编写程序,读入未指定个数的整数,判断读入的正数有多少个、负数有多少个,然后计算输入值的总和和平均值(不记0,浮点表示)
  5. 谷歌发布“虚拟现实化”游戏 Ingress
  6. QEMU 中音频模拟如何工作
  7. keras构建卷积神经网络_在Keras中构建,加载和保存卷积神经网络
  8. python爬虫:其他操作
  9. 模糊搜索神器FZF番外篇
  10. php选择nginx还是apache,浅谈apache和nginx的rewrite的区别
  11. 【Shell脚本学习7】Shell脚本学习指南分享
  12. 典型相关分析CCA计算过程
  13. linux http嗅探工具 httpry
  14. 西班牙语动词变位探究:陈述式现在时
  15. 更好的为学计算机帮助英语,北京教委公布本科跨省转学名单,两学霸为学计算机转出北大...
  16. 量产软件测试培训,东芝U盘量产教程-提供黑灰色版量产工具及检测软件
  17. Linux基础-Swap分区
  18. 什么是“荷花定律”?
  19. 做seo为什么要了解网站
  20. 在Word中巧改厘米标尺(转)

热门文章

  1. java 并发demo_《Java并发编程实践》中4.3.5章demo的一个疑问?
  2. php中module,module.php
  3. oracle需求分析,8-oracle_分析函数(二)
  4. 深度学习之生成对抗网络(6)GAN训练难题
  5. 深度学习之卷积神经网络(1)什么是卷积
  6. 【算法竞赛学习】AI助力精准气象和海洋预测
  7. JDBC概念快速入门工具类Util的写法
  8. 2020年国家电网计算机类考纲,终于发布!详解2020届国家电网考试大纲,带你读懂考纲变化!...
  9. 地表最强的MySQL安装一键式安装,信不信你下完我就给你装好!附各种Mysql安装失败的解决办法(什么你安装失败了?快来看这个)
  10. ST函数(ST表)RMQ O(1)查询 离线