与Cookie不同,Session数据存储在服务器上,每个游客访问网站都被分配了Session ID,Session数据存储在cookie中,服务器对它们进行加密语法。对于这种加密,Flask应用程序需要定义的 SECRET_KEY 。
Session对象也是一个字典对象 ,其中包含会话变量和关联值的键-值对(key/value)。
如,要设置"username" Session变量,请使用以下语句-
Session[‘username']='admin'
要释放Session变量,请使用 pop()方法。
session.pop('username', None)
以下代码是Flask中Session工作的简单演示。 URL'/'只是提示用户登录,因为未设置Session变量"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>"
当用户浏览到"/login"时,由于通过GET方法调用了login()函数,因此会打开一个登录表单。
表单被发布回" /login" ,现在已设置Session变量,应用程序被重定向到‘/',然后读取到了Session 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()视图函数,该函数会删除 Session username 变量。因此,‘/' URL再次显示了打开的页面。
@app.route('/logout') def logout(): # 如果存在,则从会话中删除用户名 session.pop('username', None) return redirect(url_for('index'))
运行该应用程序并访问主页。 (确保设置应用程序的 secret_key )
链接:https://www.learnfk.comhttps://www.learnfk.com/flask/flask-sessions.html
来源:LearnFk无涯教程网
from flask import Flask, session, redirect, url_for, escape, request app=Flask(__name__) app.secret_key='any random string'
输出将显示如下。单击链接"单击此处登录" 。
该链接将被定向到另一个屏幕。输入" admin"。
屏幕将显示"Logged in as admin" 消息。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)