当前位置: 首页 > news >正文

Django-cookie和session

文章目录

  • 前言
    • Cookie
    • Session
  • 一、Django 中 Cookie
  • 二、Django 中 Session
  • 三.区别


前言

Cookie

Cookie 是由服务器发送到用户浏览器的小文件,用于存储用户的相关信息。每次用户访问网站时,浏览器会将这些 cookie 发送回服务器

特点:
1. 数据存储在客户端,大小通常限制在 4KB
2. 过期时间可以设置,默认是会话级别
3. 用户可以手动删除 cookie

Session

Session 是一种在服务器端存储用户数据的机制,用户的数据以会话的方式保存。Django 会为每个用户生成一个唯一的 session ID,并将其存储在客户端的 cookie 中

特点:
1. 数据存储在服务器端,可以存储更大和复杂的数据结构
2. 更安全,因为用户不能直接访问 session 数据
3. 自动管理会话的过期时间

一、Django 中 Cookie

假设你想在用户的浏览器中存储一个用户的用户名,以便在下次访问时显示欢迎信息

方法:

def set_cookie(request):response = render(request, 'set_cookie.html')response.set_cookie('username', 'john', max_age=3600)# 设置一个名为username,值为john的cookie,有效期为3600秒return responsedef get_cookie(request):username = request.COOKIES.get('username', 'guest')return HttpResponse(f"欢迎回来,{username}!")

路由:

path('set_cookie', views.set_cookie, name='set_cookie'),
path('get_cookie', views.get_cookie, name='get_cookie'),

html:

<Doctype html>
<html>
<head><title>Set Cookie</title>
</head>
<body><h1>Set Cookie</h1><p>Cookie set successfully!</p
</body>
</html>

访问链接http://127.0.0.1:8000/article/set_cookie设置cookie
在这里插入图片描述
在访问http://127.0.0.1:8000/article/get_cookie获取cookie
在这里插入图片描述

二、Django 中 Session

假设你想在用户登录后存储他们的登录状态

方法:

def login_view(request):if request.method == 'POST':request.session['is_login'] = Truereturn redirect('/article/index_view')else:return render(request, 'login_view.html')def index_view(request):if 'is_login' in request.session:return render(request, 'index_view.html')else:return redirect('/article/login_view')def logout_view(request):request.session.clear()return redirect('/article/login_view')

路由:

path('login_view', views.login_view, name='login_view'),
path('logout_view', views.logout_view, name='logout_view'),
path('index_view', views.index_view, name='index_view'),

login_view.html:

<DOCTYPE html>
<html>
<head><title>Login</title>
</head>
<body><h1>Login</h1><form method="post" action="">{% csrf_token %}<label for="username">Username:</label><input type="text" id="username" name="username" required><br><br><label for="password">Password:</label><input type="password" id="password" name="password" required><br><br><input type="submit" value="Login"></form>
</body>
</html>

index_view.html:

<DOCTYPE html>
<html>
<head><title>Welcome to our website</title>
</head>
<body><h1>Welcome to our website</h1><p>Thank you for visiting our website. We hope you find what you are looking for.</p><span><a href="/article/logout_view">logout</a></span>
</body>
</html>

访问链接http://127.0.0.1:8000/article/login_view
在这里插入图片描述
因为这里只是介绍session,所以没有做验证用户处理
在这里插入图片描述
点击logout之后
在这里插入图片描述

三.区别

Cookie: 适合存储小量且不敏感的信息,直接由用户浏览器管理
Session: 适合存储较大的数据和敏感信息,数据保存在服务器端,更安全

注意: django.session 表中保存的是浏览器的信息,而不是每一个用户的信息
因此,同一浏览器多个用户请求只保存一条记录(后面覆盖前面),多个浏览器请求才保存多条记录

http://www.lryc.cn/news/442399.html

相关文章:

  • 前端进阶,使用Node.js做中间层,实现接口转发和服务器渲染
  • iPhone 16系列:熟悉的味道,全新的体验
  • 改进拖放PDF转换为图片在转换为TXT文件的程序
  • 在 Flutter 开发中如何选择状态管理:Provider 和 GetX 比较
  • python中ocr图片文字识别样例(二)
  • 2024 新手指南:轻松掌握 Win10 的录屏操作
  • 无人机黑飞打击技术详解
  • GoFly快速开发框架/Go语言封装的图像相似性比较插件使用说明
  • 【牛客】小白赛101-B--tb的字符串问题
  • 企业专用智能云盘 | 帮助企业便捷管控企业文档 | 天锐绿盘云文档安全管理系统
  • 软件工程专业未来发展方向
  • 【204】C++的vector删除重复元素
  • 模型案例:| 行李检测模型!
  • 【PostgreSQL】PostgreSQL SQL语句整理:掌握核心技能
  • 电风扇制造5G智能工厂物联数字孪生平台,推进制造业数字化转型
  • Zookeeper安装使用教程
  • Linux C# DAY3
  • Pycharm中虚拟环境依赖路径修改
  • 可视化数据分析收集软件Splunk Enterprise for Mac
  • 极狐GitLab CI/CD 功能合集(超详细教程)
  • ubuntu安装SFML库+QT使用SFML库播放声音
  • 【AI视频】Runway:Gen-2 图文生视频与运动模式详解
  • GPIO 理解(基本功能、模拟案例)
  • LeetCode_sql_day30(1264.页面推荐)
  • mysql通过binlog做数据恢复
  • macos清理垃圾桶时提示 “操作无法完成,因为该项目正在使用中” 解决方法 , 强制清理mac废纸篓 方法
  • vue3 axios ant-design-vue cdn的方式使用
  • neo4j导入csv数据
  • YOLOV8实现小目标检测
  • 解决 Prettier ESLint 错误