Python Flask框架学习14:Flask 会话
2023-09-14 09:06:14 时间
Flask Sessions(会话)
与Cookie不同,Session(会话)数据存储在服务器上。会话是客户端登录到服务器并注销服务器的时间间隔。需要在该会话中保存的数据会存储在服务器上的临时目录中。
为每个客户端的会话分配会话ID。会话数据存储在cookie的顶部,服务器以加密方式对其进行签名。对于此加密,Flask应用程序需要一个定义的SECRET_KEY。
Session对象也是一个字典对象,包含会话变量和关联值的键值对。
例如,要设置一个'username'会话变量,请使用以下语句:
Session[‘username’] = ’admin’
要释放会话变量,请使用pop()方法。
session.pop('username', None)
以下代码是Flask中的会话工作的简单演示。URL '/'只是提示用户登录,因为未设置会话变量'username'。
当用户浏览到“/login”login()视图函数时,因为它是通过GET方法调用的,所以将打开一个登录表单。
表单发送回'/login',现在会话变量已设置。应用程序重定向到'/'。此时会话变量'username'被找到。
应用程序还包含一个logout()视图函数,它会弹出'username'会话变量。因此,'/' URL再次显示开始页面。
运行应用程序并访问主页。(确保设置应用程序的secret_key)
from flask import Flask, render_template, request, make_response, session, redirect, url_for, escape, request
app = Flask(__name__)
app.secret_key = 'any random string'
@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>"
@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><br>
<p><input type = submit value = Login /></p>
</form>
'''
@app.route('/logout')
def logout():
# remove the username from the session if it is there
session.pop('username', None)
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(debug=True)
输出将显示如下。点击“点击此处登录”链接。
链接将被定向到另一个屏幕。键入“yy”。
屏幕将显示消息“以yy身份登录”。
更多内容,可关注作者的微信公众号:胖哥真不错。
相关文章
- Python 学习笔记 列表 range() xxx XXX
- mt4 python_一个使用Python自动化交易外汇MT4脚本实现「建议收藏」
- 苹果电脑python官网下载步骤-Python下载和安装图文教程[超详细]
- python fileinput_Python之fileinput模块学习「建议收藏」
- python人工智能学习笔记_[Python] 人工智能与自然语言处理学习笔记(1)[通俗易懂]
- 用Python分析2000款避孕套,得出这些有趣的结论
- python setattr函数_Python内置函数(53)——setattr
- 【说站】如何用python画月饼
- Python数组切片_python print数组
- python zipfile_Python 学习入门(16)—— zipfile
- OpenCV-Python学习(10)—— OpenCV 图像二值化处理(cv.threshold)
- Q学习(Q-learning)入门小例子及python实现
- python机器学习库sklearn——朴素贝叶斯分类器[通俗易懂]
- 员工一言不合就离职怎么办?我用Python写了个员工流失预测模型
- python自动化之BeautifulReport显示异常的解决方案
- Python爬虫之scrapy框架学习
- 【Python】MongoDB数据库安装和Pymongo操作学习
- Python 自动化指南(繁琐工作自动化)第二版:一、PYTHON 基础知识
- Python爬虫学习——简单爬虫+可视化
- python-Python与PostgreSQL数据库-PostgreSQL数据库的基本知识(一)
- Python学习:1.快速搭建python环境详解编程语言
- Python 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)详解编程语言
- python web框架学习笔记详解编程语言
- python学习Linux、Python,体验自由的乐趣(lexlinux)
- 在Linux上学习Python——你的编程之路(linux学python)
- 使用 Cython 为 Python 编写更快的 C 扩展
- Python脚本实现Linux命令快捷控制(python执行linux命令)
- Python中的Function定义方法