Flask Sessions会话

与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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux rsync 远程同步

rsync(Remote Sync) 是一个Unix/linux系统下的文件同步和传输工具。Rsync通过“rsync算法”提供了一个客户机和远程文件服务器的文件同步的快速方法。工作机制&#xff1a; 在远程同步任务中&#xff0c;负责发起rsync同步操作的客户机称为发起端&#xff0c;而负责响应来自客…

Windows下使用VisualSVN Server搭建SVN服务器

2019独角兽企业重金招聘Python工程师标准>>> 使用 VisualSVN Server来实现主要的 SVN功能则要比使用原始的 SVN和Apache相配合来实现源代码的 SVN管理简单的多&#xff0c;下面就看看详细的说明。 VisualSVN Server的下载地址如下&#xff0c;是免费的&#xff0c;随…

Aspx 页面生命周期

ASP.NET 页运行时&#xff0c;此页将经历一个生命周期&#xff0c;在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。了解页的生命周期非常重要&#xff0c;这样就能在合适的生命周期阶段编写代码&#…

Python 练习册,每天一个小程序

Python 练习册&#xff0c;每天一个小程序说明&#xff1a;Python 练习册&#xff0c;每天一个小程序。注&#xff1a;将 Python 换成其他语言&#xff0c;大多数题目也适用不会出现诸如「打印九九乘法表」、「打印水仙花」之类的题目点此链接&#xff0c;会看到每个题目的代码…

不同网段虚拟机,互相访问时的路由配置,附路由知识学习

事情实例&#xff1a; 虚拟主机&#xff1a;192.168.90.247需要访问192.168.91.XX网段的数据库&#xff0c;无法访问。 1、这里要考虑一下添加一个路由&#xff0c;目的地址为192.168.91.XX,掩码为255.255.255.0&#xff0c;网关为如图所示 2、这里添加一个路由为&#xff1a;…

iOS使用自定义字体(添加字体包)

转载请注明出处&#xff01;&#xff01;&#xff01; 首先是最简单也普遍的做法&#xff0c;打包内置字符库文件&#xff1a; 步骤如下&#xff1a; 1.第一步找到你想用的字体的 ttf 格式。加入到你的工程的resouce目录下。 2.在工程的plist中AddRow&#xff0c;“Fonts provi…

TP5:框架下载与安装——1

哪里下载&#xff1f; 一、百度搜索&#xff1a;ThinkPHP5.0完全开发手册 可以在找到安装TP5的介绍&#xff0c;分别有官网下载安装、Composer安装、Git安装三种方式下载 二、下载好文件 这里我们选择了GIT方式安装&#xff0c;要注意的是&#xff0c;要同时下载应用项目和核…

游戏密保卡图片识别

识别主要步骤 1.图像预处理。包括确认图片有效区域&#xff0c;灰度化&#xff0c;二值化。 2.字符分割。即将识别信息最小化。由于密保卡图片文字宽度固定且无粘连&#xff0c;只需要使用固定宽度切割。 3.对分割后的信息提取特征,建立特征库 4.提取特征和特征库样本进行匹配&…

基于visual Studio2013解决C语言竞赛题之0505选数

&#xfeff;&#xfeff;题目解决代码及点评/************************************************************************/ /* 5&#xff0e; 输入N个数到数组中&#xff0c;选出其中最大的数和最小的数&#xff0c;并分别将它们与最前面和最后面的数互换 */ /*************…

TP5:缩短访问路径和路由的使用——2

一、缩短访问路径 1、如图访问该文件路径 没有缩短之前&#xff0c;访问的路径是 http://localhost/zerg_new/public/index.php/api/v1/banner/1 缩短后&#xff0c;访问的路径是 http://z_new.cn/api/v1/banner/1 2、缩短路径步骤 本机apache配置&#xff0c;小编使用的…

10个加速Table Views开发的Tips

2019独角兽企业重金招聘Python工程师标准>>> 本文由CocoaChina译者yake_099&#xff08;博客&#xff09;翻译&#xff0c;作者&#xff1a;David McGraw 原文&#xff1a;10 Actionable Performance Tips To Speed Up Your Table View 在我们开始之前&#xff0c;…

TP5:验证器的封装——5

TP5的独立验证器如图所示&#xff1a; $validate new Validate([name > require|max:25,email > email ]); $data [name > thinkphp,email > thinkphpqq.com ]; if (!$validate->check($data)) {dump($validate->getError()); } 现在我们把验证器的封装…

flask蓝图的使用

flask蓝图的使用 首先&#xff0c;我对蓝图的理解相对通俗&#xff0c;就是觉得蓝图对于视图方法模块化、大项目协同开发过程中的一个很好的工具. 1.下图是我们通常情况下使用的项目组织结构 看一下视图方法: #views.py1 from app import app2 3 4 app.route(/user/index)5 d…

TP5:异常处理封装——3

如果不进过异常封装&#xff0c;如果抛出一异常只会只会上图所示&#xff0c;大部分时候&#xff0c;用户只需要知道Division by zero就够了。 1、首先先建一个类BaseException并继承Exception&#xff0c;这里有三个参数 $code 400; $msg ; $errorCode ;并处理当抛出异常时的…

接口测试(java+testng+ant+jenkins)第三篇ant

1、ant是什么&#xff1f; 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具 2、下载安装 http://www.cnblogs.com/yuzhongwusan/archive/2013/03/26/2982411.html 3、在eclipce中的使用 准备工作&#xff1a; 项目右键——new——folder——folder name: li…

KVM虚拟机IO处理过程(二) ----QEMU/KVM I/O 处理过程

接着KVM虚拟机IO处理过程中Guest Vm IO处理过程(http://blog.csdn.net/dashulu/article/details/16820281),本篇文章主要描述IO从guest vm跳转到kvm和qemu后的处理过程. 首先回顾一下kvm的启动过程(http://blog.csdn.net/dashulu/article/details/17074675).qemu通过调用kvm提供…

如何利用echarts图表获取条状图点击名称和值

如何利用echarts图表获取条状图点击名称和值 听语音 |浏览&#xff1a;1505|更新&#xff1a;2017-06-13 10:20|标签&#xff1a;软件 1 2 3 4 5 6 7 分步阅读 echarts图表插件工具&#xff0c;包含了各种不同类型的图形&#xff0c;有圆饼图、折线图、圆环图、柱状图…

TP5: 日志记录改造——4

TP5的日志如果没有特别设置的话&#xff0c;只要出现错误就会记录在日志文件中。这种是没有做必要的&#xff0c;因为这样的话&#xff0c;LOG文件会特别大&#xff0c;而且有好多都是没有用的信息。下面我们对LOG日志进行改造只记录我们需要的信息。 还记得上一章中&#xff…

.NET使用免费开源类库操作Excel

2019独角兽企业重金招聘Python工程师标准>>> 自从上次找到NPOI之后&#xff0c;根据园友提供的线索以及Google&#xff0c;又找到了一些开源免费的类库&#xff0c;所以都简单体验了一遍。 主要找到以下类库&#xff1a; MyXls(http://sourceforge.net/projects/m…

JMS 消息处理

转载于:https://www.cnblogs.com/luswei/p/7504781.html