Django-----cookie&session
cookie
保存在用户浏览器端的一个键值对(别人给的凭证)
服务端可以向用户浏览器写cookie
客户端每次发请求会携带cookie去(放在请求头里面)
淘宝的cookie 京东的cookie(http的连接很简单,是无状态的,为了登录后下次来还认识,也为了避免再次登录)
功能:1.一段时间内免登录 2.浏览器自动记住账号密码 3.修改每次看的页数(只用修改一次)
禁用浏览器的cookie(无限投票例子)
用户第一次请求时候后端处理代码

def login(request):
if request.method=="GET":
return render(request,'登录界面')
else:
user=request.POST.get('username')
pwd=request.POST.get('password')
print(user,pwd)
if user=='akagi' and pwd== '521':
obj=redirect('用户后台')
#obj.set_cookie('ticket','sdfasdas',max_age=10,path='/')#max_age=10 十秒后cookie失效 里面的path属性指定这个cookie内容在哪个url生效
obj.set_signed_cookie('ticket','19438',salt='jjjjjj',max_age=10)#cookie加密(签名)需要做异常处理 解密解密p57
#set_cookie(self, key, value='', max_age=None, expires=None, path='/',
# domain=对域名划分sso, secure=https相关, httponly=安全相关js代码无法获取到, samesite=??):
return obj
else:
return render(request, '登录界面')
后端会检查用户请求的时候是否带有相关的cookie,有则通过再做其他操作,无则返回登录界面

def classes(request):
try:
#tk=request.COOKIES.get('ticket') #自定义名字
tk=request.get_signed_cookie('ticket',salt='jjjjjj') #=加密时候salt要对应 签名
except KeyError:
return redirect('/login/')
#print('tk=',tk)
if not tk:
return redirect('/login/')
session(推荐)
保存在服务器端的数据(本质是键值对)
应用的时候依赖于cookie
作用:保持会话( Web网站)
好处:敏感信息不会直接给客户端(cookie容易被伪造,即使签了名也能被破解,因为数据在浏览器端)
原理:用户请求,返回一串随机字符串,然后服务端也保存这个随机字符串为key,一个字典为value(里面可以记录各种数据)
用户第一次请求时候后端处理代码

def session_login(request):
if request.method=='GET':
return render(request,'session.html')
else:
u=request.POST.get('user')
p=request.POST.get('pwd')
obj=models.UserAdmin.objects.filter(username=u,password=p).first()
if obj:
#1.生成随机字符
#2.通过cookie发给客户端
#3.服务端保存(随机字符串1,{'username':'qwe',} ;下次验证两端各一份) 对应cookie里面的sessionid
#(数据,类似键值对 放到数据库表里面了)
request.session['username']=obj.username #做三件事123 键值对
request.session['password'] = obj.password
#随着增加的键值对越多,数据库session_key不变,session_data变长
request.session['email'] = 'love@qq.com'
request.session.set_expiry(5) #设置失效时间
# * 如果value是个整数,session会在些秒数后失效(适用于整个Django框架,即这个数值时效时整个页面都会session失效)。
#* 如果value是个datatime或timedelta,session就会在这个时间后失效。
#* 如果value是0,用户关闭浏览器session就会失效。
#* 如果value是None,session会依赖全局session失效策略。
return redirect('/indexxx/')
else:
return render(request,'session.html',{'message':'请重新登录'})
对session验证

def indexxx(request):
#1.获取客户端cookie种的随机字符串
#2.去session种查找有没有随机字符
#3.去session中查看对应key的value中是否有值
v=request.session.get('username') #获取session里面key为username的value
s=request.session.session_key
b=request.session.values()
print(s)
if v:
return HttpResponse('ok,登录成功:%s---%s----%s' %(v,s,b))
else:
return redirect('/session_login/')
PS:
DJANGO 设置SESSION过期时间
cookie和session的详解与区别
Django-----cookie&session的更多相关文章
- Django Cookie Session和自定义分页
Django中操作Cookie 获取Cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, ...
- django cookie session 自定义分页
cookie cookie的由来 http协议是无状态的,犹如人生若只如初见,每次都是初次.由此我们需要cookie来保持状态,保持客户端和服务端的数据通信. 什么是cookie Cookie具体指的 ...
- day55:django:cookie&session
目录 1.Cookie 1.Cookie前戏 2.Cookie的引入 3.django中操作cookie 2.Session 1.cookie的局限性 2.session技术 3.django操作se ...
- Django Cookie,Session
Cookie Cookie的由来 HTTP协议是无状态的,每次请求都是独立的,对服务器来说,每次的请求都是全新的,上一次的访问是数 据是无法保留到下一次的 某些场景需要状态数据或者中间数据等相关对下一 ...
- django cookie session操作
Cookie是什么? cookie说的直白点就是保存在用户浏览器端的一个键值对,举个例子,你现在登录了京东商城,你把浏览器关闭之后,你再打开京东,你还是可以对你的账户继续操作,已经购买的商品,订单都是 ...
- django cookie,session,auth
一.最完美的auth auth_user 是用来存储的用户注册的username,password auth 首先需要引入模块 from django.contrib import auth 用户认证 ...
- Python Web框架篇:Django cookie和session
part 1 概念 在Django里面,cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话. 两者最大的区别是cookie的信息是存放在浏览器客户端的,而sessio ...
- 浅析Django之session与cookie
浅析Django之session与cookie 1 session与cookie概述 原理: 由于HTTP协议是无状态,无连接的,当用户发起网路请求时,需要服务端能标识用户ID,用以存储用户相关信息, ...
- python Django cookie和session
在一个会话的多个请求中共享数据,这就是会话跟踪技术.例如在一个会话中的请求如下: 请求银行主页: 请求登录(请求参数是用户名和密码): 请求转账(请求参数与转账相关的数据): 请求信誉卡还款(请求参 ...
- django - 总结 - cookie|session
Cookie是通过HTTP请求和响应头在客户端和服务器端传递的. 在Web开发中,使用session来完成会话跟踪,session底层依赖Cookie技术. --------------------- ...
随机推荐
- cookie可设置哪些属性?httponly?
chrome控制台的application下可查看: cookie name 字段为一个cookie的名称. value 字段为一个cookie的值. domain 字段为可以访问此cookie的域名 ...
- java-第三方工具去做一些校验
推荐大家使用第三方 jar 的工具类去做判空.比如:从 Map 中取一个 key 的值,可以用 MapUtils 这个类:对字符串判空使用 StringUtils 这个类:对集合进行判空使用 Coll ...
- 学习Squid(三)
Squid 缓存服务 1.缓存服务器结束 缓存服务器(cache server),即用来存储(介质为内存及硬盘)用户访问的网页.图片.文件等等信息的专用服务器,这种服务器不仅可以使用户可以最快的得到他 ...
- django REST框架- Django-ninja
Django 是我学习的最早的web框架,大概在2014年,当时选他原因也很简单就是网上资料比较丰富,自然是遇到问题更容易找答案,直到 2018年真正开始拿django做项目,才对他有了更全面的了解. ...
- c源文件中为什么要包含自己对应的头文件
另一篇:.c文件和.h文件的关系 引言: 我们经常在c工程中发现,源文件中要包含自己的头文件.一直以来,都不知道为什么这样做.现在,我知道了. 以前的认知: 我认为,.c文件没有必要包含自己的.h文件 ...
- Python中的numpy库介绍!
转自:https://blog.csdn.net/codedz/article/details/82869370 机器学习算法中大部分都是调用Numpy库来完成基础数值计算的.安装方法: pip3 i ...
- 顺利通过EMC实验(13)
- java中如何使用接口继承(Extending Interfaces)
5.接口继承(Extending Interfaces)和通话talk的功能.而Moto888更为高级,除了照相和通话功能以外,还有mp3的功能.接口继承到底有什么意义呢?马克-to-win:1)通过 ...
- CCF201812-2小明放学
题目背景 汉东省政法大学附属中学所在的光明区最近实施了名为"智慧光明"的智慧城市项目.具体到交通领域,通过"智慧光明"终端,可以看到光明区所有红绿灯此时此刻的状 ...
- Python使用函数模拟“汉诺塔”过程
运行效果: 源代码: 1 # -*- coding:utf-8 -*- 2 ##汉诺塔游戏开始 3 _times=0 #用于统计移动次数 4 def hannuota(nlist,mfrom,mpas ...