Django-cookie和session

ops/2024/11/13 15:05:48/

文章目录

  • 前言
    • 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.ppmy.cn/ops/113743.html

相关文章

麒麟操作系统 MySQL 主从搭建

MySQL rpm64 架构搭建主从 文章目录 1.检查操作系统2.配置基础环境3.下载软件并安装4. 服务初始化5 主从搭建5.1 主节点配置(192.168.31.82)5.2 从节点配置(192.168.31.83)5.3 从节点配置(192.168.31.84)5.4 节点都重启5.5 在主机上建立帐户并授权slave5.6 salve 来同步master…

Oracle(137)如何管理UNDO表空间?

管理UNDO表空间是Oracle数据库管理的重要组成部分&#xff0c;涉及监控UNDO使用情况、调整UNDO表空间大小、配置UNDO保留策略等方面。以下是一些关键的管理任务和相应的SQL命令示例。 监控UNDO表空间的使用情况 监控UNDO表空间使用情况对于优化性能和避免空间不足的情况非常重…

【Mysql】为modified_time和created_time设置默认值

建立表SQL&#xff1a; CREATE TABLE your_table_name (id int(11) NOT NULL AUTO_INCREMENT,/* 其他字段 */created_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建日期,modified_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 修改…

Pyspark dataframe基本内置方法(5)

文章目录 Pyspark sql DataFrame相关文章toDF 设置新列名toJSON row对象转换json字符串toLocallterator 获取迭代器toPandas 转换python dataframetransform dataframe转换union unionALL 并集不去重&#xff08;按列顺序&#xff09;unionByName 并集不去重&#xff08;按列名…

【Webpack--013】SourceMap源码映射设置

&#x1f913;&#x1f60d;Sam9029的CSDN博客主页:Sam9029的博客_CSDN博客-前端领域博主 &#x1f431;‍&#x1f409;若此文你认为写的不错&#xff0c;不要吝啬你的赞扬&#xff0c;求收藏&#xff0c;求评论&#xff0c;求一个大大的赞&#xff01;&#x1f44d;* &#x…

mysql笔记—sql性能分析

1.查看数据库各个语句的执行频次 show global/session status like ‘com__’ 2.慢查询 默认没有开启&#xff0c;需要手动开启&#xff08;在/etc/my.cnf中开启&#xff09; 开启后在localhost-slow.log中可以查询到慢查询的语句的相关信息&#xff1a; 3.explain 用法&…

ASP .NET CORE 6 项目实现WebSocket通信实践

一、简介 WebSocket 是一种计算机通信协议&#xff0c;提供了全双工通信通道&#xff0c;特别适用于需要频繁更新数据的应用&#xff0c;如实时聊天、在线游戏和股票行情等。它在 Web 应用中有着广泛的应用&#xff0c;因为它能够在客户端和服务器之间建立持久连接&#xff0c;…

第二百三十九节 JPA教程 - JPA一对一延迟加载示例

JPA教程 - JPA一对一延迟加载示例 以下代码显示如何使用延迟加载设置执行一对一映射。 OneToOne(fetchLAZY)private Department department;例子 下面的代码来自Person.java。 package cn.w3cschool.common; import javax.persistence.Entity; import javax.persistence.Gene…