与Cookie不同,会话数据存储在服务器上。会话是客户端登录到服务器并注销的时间间隔。需要在此会话中进行的数据存储在服务器上的临时目录中。

与每个客户端的会话分配一个会话ID。会话数据存储在cookie顶部,服务器以加密方式签名。对于这种加密,Flask应用程序需要一个定义SECRET_KEY

会话对象也是一个包含会话变量和关联值的键值对的字典对象。

例如,要设置'username'会话变量,请使用语句 -


Session['username'] = 'admin'

蟒蛇

要删除会话变量,使用请pop()方法。


session.pop('username', None)

蟒蛇

以下代码是Flask中会话如何工作的简单演示'/'.URL => 提示用户登录,因为会话变量username没有设置。


@app.route('/')
def index():if 'username' in session:username = session['username']return 'Logged in as ' + username + '<br>' + \"<b><a href = '/logout'>click here to log out</a></b>"return "You are not logged in <br><a href = '/login'></b>" + \"click here to log in</b></a>"

蟒蛇

当用户浏览到URL => '/login'时,login()函数显示视图,因为它是通过GET方法调用的,所以打开一个登录表单。

表单填写后重新提交到URL => /login,现在会话变量被设置。应用程序被重定向到URL => /。这时找到会话变量:username


@app.route('/login', methods = ['GET', 'POST'])
def login():if request.method == 'POST':session['username'] = request.form['username']return redirect(url_for('index'))return '''<form action = "" method = "post"><p><input type = text name = "username"/></p><p<<input type = submit value = Login/></p></form>'''

蟒蛇

该应用程序还包含一个logout()视图函数,它删除'username'会话变量的值。再次URL跳转到'/'显示开始页面。


@app.route('/logout')
def logout():# remove the username from the session if it is theresession.pop('username', None)return redirect(url_for('index'))

蟒蛇

运行应用程序并访问主页(确保设置应用程序的secret_key)。


from flask import Flask, session, redirect, url_for, escape, request
app = Flask(__name__)
app.secret_key = 'any random string’

蟒蛇

完整代码如下所示 -


from flask import Flask
from flask import render_template
from flask import request
from flask import make_response
from flask import Flask, session, redirect, url_for, escape, requestapp = Flask(__name__)
app.secret_key = 'fkdjsafjdkfdlkjfadskjfadskljdsfklj'@app.route('/')
def index():if 'username' in session:username = session['username']return '登录用户名是:' + username + '<br>' + \"<b><a href = '/logout'>点击这里注销</a></b>"return "您暂未登录, <br><a href = '/login'></b>" + \"点击这里登录</b></a>"@app.route('/login', methods = ['GET', 'POST'])
def login():if request.method == 'POST':session['username'] = request.form['username']return redirect(url_for('index'))return '''<form action = "" method = "post"><p><input type ="text" name ="username"/></p><p><input type ="submit" value ="登录"/></p></form>'''@app.route('/logout')
def logout():# remove the username from the session if it is theresession.pop('username', None)return redirect(url_for('index'))if __name__ == '__main__':app.run(debug = True)

蟒蛇

输出将显示如下。点击链接“ 点击这里登录 ”。

该链接将被引导至另一个界面。输入'admin'。

屏幕会显示消息“ 登录用户名是:admin ”。如下所示 -

¥我要打赏

原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/flask/flask_sessions.html

Flask Sessions会话相关推荐

  1. Flask的会话技术:cookie、session以及session持久化问题

    文章目录 一.会话技术 1.介绍 2.详细过程 二.Cookie 1.Cookie介绍 2.Cookie登陆使用 三.Session 1.Session介绍 2.Session登陆使用 3.Sessi ...

  2. Flask学习之基础知识与功能

    一:flask的背景介绍 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请 ...

  3. Flask session API

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

  4. 【python】Flask之session使用

    一.session机制 1.1 session的作用 由于http协议是一个无状态的协议,但网站基本上有登录使用的功能,这要求有状态管理,而session机制实现的就是这个功能 session基于co ...

  5. Flask快速入门,知识整理

    一.Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来) Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是 ...

  6. 轻量级web开发框架:Flask 基础教程

    Flask 简介 什么是Flask? Flask是一个用Python编写的Web应用程序框架.Flask基于Werkzeug(WSGI工具包)和Jinja2模板引擎. 什么是Web Framework ...

  7. 三、Flask_会话控制与请求钩子

    1. 会话控制 会话控制: cookie 和 session 在flask中会话控制的保存主要通过request和response来完成 session本质上就是保存在服务端中的一个文件,文件中存储了 ...

  8. python flask 路由_python框架之Flask(2)-路由和视图Session

    路由和视图 这一波主要是通过看源码加深对 Flask 中路由和视图的了解,可以先回顾一下装饰器的知识:[装饰器函数与进阶] 路由设置的两种方式 #示例代码 from flask importFlask ...

  9. Flask入门到实战

    文章目录 1. Flask初识 1. Flask概述 2. wsgi 3. 安装Flask 4. werkzurg 5. 第一个Flask应用 2. 配置文件的使用 1. 配置文件导入原理 2. 配置 ...

最新文章

  1. JMeter的安装和使用
  2. Android 存储路径选择
  3. JCheckbox全选
  4. 象棋子 设计模式_通过设计国际象棋游戏了解策略模式
  5. 前端学习(3274):js中this的使用三
  6. VBScript:登录脚本
  7. Android9.0 setStereoVolume左右声道流程(二十四)
  8. 关于支付宝授权登录获取用户信息
  9. php批量导入txt文件,如何把一个文本文件中的十几万数据快速的导入到sql表中
  10. 出生就遇浏览器大战,亲爹还不爱,命运坎坷的JavaScript终于苦尽甘来
  11. IJCAI 2021 | 面向睡眠阶段分类的多模态显著性波形检测网络
  12. win7一直显示正在启动_win7旗舰版升级后无法启动电脑的解决方法
  13. 深入浅出解析变分法——一种常用的数学方法
  14. 一WAN多拨(一号多拨)实验
  15. Amlogic 4K UI显示
  16. 硅谷录用的计算机专业大学排名,学计算机科学专业,必选硅谷附近的这些加州大学...
  17. 我的偶像Micheal.Jackson (MTV全集):本来是有一套Micheal的经典VCD的,但被朋友拿走再没还回来……
  18. c#通过串口及CAN模块实现上位及下位机通讯
  19. matlab BP神经网络 newff函数官方源码
  20. Java中怎么切换窗口

热门文章

  1. JAVA并发编程实战---第三章:对象的共享(2)
  2. ospf 单区域配置
  3. 数据治理 主数据 元数据_我们对数据治理的误解
  4. vue.js python_使用Python和Vue.js自动化报告过程
  5. 求一个张量的梯度_张量流中离散策略梯度的最小工作示例2 0
  6. Java—jsp编程
  7. 域 嵌入图像显示不出来_如何(以及为什么)将域概念嵌入代码中
  8. 消费者行为分析_消费者行为分析-是否点击广告?
  9. 【慎思堂】之JS牛腩总结
  10. P2327 [SCOI2005]扫雷