9、flask-会话-cookie

news/2024/10/6 1:56:10/文章来源:https://www.cnblogs.com/littlecc/p/18288638

Cookie

客户端的会话技术:
- cookie本身由浏览器保存,通过response将cookie写道浏览器上、下一次访问时、浏览器会根据不同的规则携带cookie过来特点:
- 客户端的会话技术、浏览器的会话技术
- 数据全都是存储在客户端中
- 存储使用的键值对结构进行的存储
- 特性:- 支持过期时间- 默认会自动携带本网站的所有cookie- 根据域名进行cookie存储- 不能跨域名- 不能跨浏览器
- cookie是通过服务器创建的response来创建的设置cookie:
- response.set_cookie(key, valuep[,max_age=None,exprise=None])- max_age:整数,指定cookie过期的时间- expries:整数,指定过期时间,可以指定一个具体日期时间 - max_age和expries两个选一个指定

获取cookie:

  request.cookies.get(key)

删除cookie:

  response.delete_cookie(key)

 

案例:

__init__.py

#__init__.py: 初始化文件、用来创建flask应用from flask import Flask
from .views import blue     #蓝图def create_app():app = Flask(__name__)   #创建flask应用#注册蓝图app.register_blueprint(blueprint=blue)return app

app.py

from App import create_appapp = create_app()if __name__ == '__main__':app.run(debug=True)

views.py

# 路由 + 视图函数
import datetimefrom flask import request, redirectfrom flask import Blueprint, render_template
# from models import *#蓝图
# 创建蓝图对象
# 第一个参数:蓝图的名字
# 第二个参数:蓝图的包名
blue = Blueprint('user', __name__,)#首页
@blue.route('/')        # 路由
@blue.route('/home/')
def home():#4.获取cookie# 这里的user 是保存到cookie中的变量名,如果不一样或是不存在就无法获取username = request.cookies.get('user')return render_template('home.html', username=username)#登录页面
@blue.route('/login/', methods=['GET', 'POST'])
def login():# 判断请求方式、如果是get请求,则返回登录页面if request.method == 'GET':return render_template('login.html')# 如果是post请求,则进行登录操作elif request.method == 'POST':pass#1. 获取前端提交的数据username = request.form.get('username') #post提交使用form、这里的username要和html中的name属性一致password = request.form.get('password') #这里的password要和html中的name属性一致#2. 实现登录功能, 验证账号密码是否正确if username == 'xiaoxin' and password == '123456':#登录成功、跳转到首页response = redirect('/home/')# 3.设置cookie# cookie中不能用中文# response.set_cookie('user', username) 默认浏览器关闭则cookie失效#过期时间:#   max_age: 秒    # 7天#   expires: 指定日期# response.set_cookie('user', username, max_age=3600*24*7)response.set_cookie('user', username, expires=datetime.datetime(2025, 7, 9))return responseelse:return '登录失败,用户名或密码错误'# 注销
@blue.route('/logout/')
def logout():#先跳转到首页(刷新)response = redirect('/home/')# 5.选择要删除的cookieresponse.delete_cookie('user')return response

home.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>首页</title>
</head>
<body><h2>首页</h2><hr>{% if username %}<p>你已经登录了,欢迎你:{{ username }}</p><a href="/logout/">注销</a>{% else %}{#跳转到登录页面,注意这里要从后端路由去跳转#}<a href="/login/">登录</a>{% endif %}</body>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录</title>
</head>
<body><h2>登录</h2><hr>{#登录表单#}
{#    <form action="" method="post">#}
{#    <form action="{{ url_for('user.login') }}" method="post">#}<form action="/login/" method="post"><p>用户名:<input type="text" name="username"></p><p>密码:<input type="password" name="password"></p><p><input type="submit" value="登录"></p></form></body>
</html>

 

 

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

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

相关文章

# Day02

1. #盘符转换 2. #查看当前目录下的所有文件 dir 3. #切换目录 cd change directory 4. #返回上一级 cd.. 5. #进入目录下的一级文件 先用第二步查看目录下的文件 然后cd+空格+一级文件名称 6 .#进入一级文件下的二级文件 方法同第五步 7. #清理屏幕 cls (简记clear screen) 8.…

dotnet WinUI3 Win2D 翻转图片

本文将告诉大家如何在 WinUI3 里面使用 Win2D 进行图片的翻转,本文的方法也适用于 UWP 框架图片的翻转在 Win2D 里面,可以使用 Transform2DEffect 特效来辅助实现,核心逻辑就是通过缩放矩阵当成2D翻转矩阵,将缩放的 X 和 Y 传入负数即可分别实现对应方向的翻转。比如左右水…

UWP WinUI 制作一个路径矢量图标按钮样式入门

本文将告诉大家如何在 UWP 或 WinUI3 或 UNO 里,如何制作一个路径按钮。路径按钮就是使用几何路径轮廓表示内容的按钮,常见于各种图标按钮,或 svg 系贴图矢量图按钮在网上有非常多矢量图库,其中免费的图库也非常多,比如 https://www.iconfont.cn/ 等等。在咱的应用程序里面…

【攻防技术系列+代理转发】工具--netcat

【需求】现在想要实现两个不同网段的私网之间相互通信,我们该如何做呢?🔴实验环境:【kali(攻击端)】:192.168.10.131 【centos7(跳板机)】:192.168.10.39;172.16.80.130 【win7】:172.16.80.131 工具:netcat【kali】: 开启监听【centos7】:【kali】: 获得对方的…

基于FPGA的A律压缩解压缩verilog实现,包含testbench

1.算法仿真效果 VIVADO2019.2仿真结果如下(完整代码运行后无水印):RTL图如下所示:2.算法涉及理论知识概要A律压缩是一种广泛应用于语音编码的非均匀量化技术,尤其在G.711标准中被欧洲和中国等国家采纳。该技术的核心目的是在有限的带宽下高效传输语音信号,同时保持较高的…

LFU算法实现

LFU (Least Frequently Used) 是一种用于缓存管理的算法。它通过跟踪每个缓存项被访问的频率来决定哪些项应该被移除。LFU算法倾向于保留那些使用频率较高的项,而移除那些使用频率较低的项。以下是LFU算法的详细介绍: 工作原理计数器:每个缓存项都有一个计数器,用于记录该项…

灰色预测GM(1,1)模型的理论原理

灰色预测是对时间有关的灰色过程进行预测。通过建立相应的微分方程模型,从而预测事物未来发展趋势的状况。 由于笔者的水平不足,本章只是概括性地介绍GM(1,1)模型的理论原理,便于对初学者的初步理解 目录一、灰色系统二、GM(1,1)灰色预测模型1.生成累加数据与紧临均值生成…

JMonkeyEngine——材质文件备注

默认J3M编辑器不支持编辑纹理参数的Mag/Min滤波选项,只能配置Flip和Wrap模式,但是可以单独编辑J3M源码,如下: 添加你需要的Mag/Min滤波选项,参考源码的解析,就是Mag/Min+拼接对应的Filter值。 虽然打开J3M编辑器会报错: 但实际进游戏时并不会报错,而且一切正常,如下:…

04-JS中的面向对象ES5

JS面向对象基础01 JS对象中key的类型02 创建对象的方法03 对象的常见操作 3.1 访问对象的属性 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="I…

程序员的AI工作流

AI 工具在日常工作中的应用逐渐成为程序员必备利器。本文介绍了作者常用的一些 AI 工具及使用方式,涵盖需求文档分析、技术文档编写、编程、PR/CR 和技术调研等工作内容,为提升工作效率提供了有力支持。作为一名程序员, 我现在已经深刻的体会到了AI带来的巨大的工作提升 本文…

An Attentive Inductive Bias for Sequential Recommendation beyond the Self-Attention

目录概符号说明BSARec (Beyond Self-Attention for Sequential Recommendation)代码Shin Y., Choi J., Wi H. and Park N. An attentive inductive bias for sequential recommendation beyond the self-attention. AAAI, 2024.概 本文在 attention block 中引入高低频滤波. 符…