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;而负责响应来自客…

GUI 快捷键的实现思路

思路: 前提快捷键操作不可重复,即一个快捷键对应一个控件的动作一个窗体保持一份快捷键的map映射在相应的消息中获取快捷键列表如键盘消息在控件类对象中定义一个默认的响应行为,比如Button按了Enter键当子控件隐藏,父控件关系发生变化时则重新设置快捷键转载于:https://www.cn…

hadoop中unhealthynodes的问题解决

在yarn-site.xml中加入如下配置 <property> <name>yarn.nodemanager.disk-health-checker.min-healthy-disks</name> <value>0.0</value> </property> <property><name>yarn.nodemanager.disk-health-checker.max-d…

javascript权威指南——笔记(第十章:正则)

正则表达式是描述字符模式的对象 为什么使用正则&#xff1a; 1.找数字 1 var str "12 f13kjm54n43 43k";2 var arr [];3 4 for(var i 0, len str.length; i<len; i){5 6 var char str.charAt(i);7 8 if(char > "0"…

解決 centos -bash: vim: command not found

i. 那么如何安裝 vim 呢? 输入rpm -qa|grep vim 命令, 如果 vim 已经正确安裝,会返回下面的三行代码: rootserver1 [~]# rpm -qa|grep vim vim-enhanced-7.0.109-7.el5 vim-minimal-7.0.109-7.el5 vim-common-7.0.109-7.el5 如果少了其中的某一条,比如 vim-enhanced 的,就…

mysql日期和时间类型

mysql日期和时间类型 mysql有5种表示时间值的日期和时间类型&#xff0c;分别为、DATE&#xff0c;TIME&#xff0c;YEAR&#xff0c;DATETIME&#xff0c;TIMESTAMP。 TIMESTAMP类型有专有的自动更新特性&#xff0c; TIMESTAMP类型有专有的自动更新特性&#xff0c; TIME…

Python程序每日一练习

问题一&#xff1a;做为Apple Store App独立开发者&#xff0c;你要搞限时促销&#xff0c;为你的应用生成激活码&#xff08;或者优惠券&#xff09;&#xff0c;使用Python如何生成200个激活码&#xff08;或者优惠券&#xff09;&#xff1f; 简介&#xff1a;通用唯一识别码…

C/C++查找一定范围内的素数(筛法)

本文转自于&#xff1a;http://dalu.blogbus.com/logs/37977984.html 由于一个合数总是可以分解成若干个质数的乘积&#xff0c;那么如果把质数&#xff08;最初只知道2是质数&#xff09;的倍数都去掉&#xff0c;那么剩下的就是质数了。例如要查找100以内的质数&#xff0c;首…

mysql中char,varchar与text类型的区别和选用

关于char&#xff0c;varchar与text平时没有太在意&#xff0c;一般来说&#xff0c;可能现在大家都是用varchar。但是当要存储的内容比较大时&#xff0c;究竟是选择varchar还是text呢&#xff1f;不知道。。。。。。 text 、 char、varchar 是数据在数据库中的存放策略问题…

循环Map方法

public static void main(String[] args) { Map<String, String> map new HashMap<String, String>(); map.put("1", "张三"); map.put("2", "李四"); map.put("3", "王五"); /*方法一 &#xff1a;…

rsync备份学习

备份内容&#xff1a;把虚拟机A&#xff08;192.168.91.243&#xff09;需要把文件备份到虚拟机B&#xff08;192.168.91.207&#xff09; 一、检查两台虚拟机是否已经安装rsync rsync -version命令检查 二、如果没有安装rsync&#xff0c;需要先安装rsync 在客户端和服务器…

四大组件的工作过程

1、四大组件的运行状态 Android的四大组件中除了BroadcastReceiver以外&#xff0c;其他三种组件都必须在AndroidManifest中注册&#xff0c;对于BroadcastReceiver来说&#xff0c;既可以在AndroidManifest中注册也可以通过代码来…

联系表单 1_copy

你的名字 &#xff08;必填&#xff09; [text* your-name] 你的邮箱 &#xff08;必填&#xff09; [email* your-email] 主题 [text your-subject] 你的留言 [textarea your-message] [submit "发送"] [your-subject] [your-name] < [your-email]> 发件人…

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

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

新装的linux系统,用SSH连接出现乱码怎么办?附改名虚拟机文件方法

原因&#xff1a;SSH不支持中文&#xff0c;需要系统语言设置 1、查看当前操作系统的语言 echo $LANG 2、临时更改默认语言(关闭当前会话失效) export LANGen_US.UTF-8 3、永久生效,编辑文件保存并退出 vi /etc/sysconfig/i18n LANG"en_US.UTF-8" 4、使其…

hdu 6183 线段树的空间优化

题意&#xff1a; 一个空的坐标系&#xff0c;有④种操作&#xff1a;①1 x y c表示在(x, y)点染上颜色c&#xff1b;②2 X y1 y2表示查询在(1, y1)到(X, y2)范围内有多少种不同的颜色&#xff1a; ③0表示清屏&#xff1b;④3表示程序退出&#xff08;0<x, y<1000000, 0…

js 判断数据是否为空

// var a ""; // var a " "; // var a null; // var a undefined; // var a []; // var a {}; // var a NaN;if(a undefined) { // 只能用 运算来测试某个值是否是未定义的console.log("为undefined");}if(a nul…

Aspx 页面生命周期

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

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

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

添加永久路由的方法

配置文件配置路由的方法&#xff1a; 直接编辑/etc/sysconfig/static-routes&#xff1a; vim /etc/sysconfig/static-routes 根据需要配置&#xff0c;比如&#xff1a; 192.168.90.52增加一条路由 172.0.0.0\8 指向 192.168.91.12 默认网关不变&#xff0c;增加的路由&am…