Django简单设置cookies和session
一、Cookie
cookie及特点
- Cookie是由服务器(网站)生成的,存储在浏览器端的 键值对数据(通常经过加密)
- 在响应请求时,服务器会把生成 Cookie数据 发给浏览器,浏览器会自动保存(前提:浏览器开启了cookie功能)
- 浏览器请求服务器(网站)时,会自动上传该服务器(网站)生成的所有Cookie
- Cookie基于 域名安全 的。每个网站只能访问到自己生成的cookie,无法访问其它网站(域)生成的cookie
2.Cookie的应用
- 保存登录状态:当用户登录某网站后,一定时间内不用再次输入用户名和密码登录。
- 保存用户浏览器的商品: 再次访问网站时,把用户之前浏览过的商品记录显示出来

3.django中cookies的读取与保存
保存cookie: 通过
HttpResponse响应对象的set_cookie方法保存response.set_cookie('键', '值',max_age)max_age有效期,一个整数,单位为秒,表示在多长时间后失效- Cookie默认有效期: 如果不指定有效期,或者
max_age值为None,则关闭浏览器后Cookie数据就会过期
读取cookie: 通过
HttpRequest请求对象的COOKIES属性(字典类型)读取request.COOKIES['键'] # 一般不用这个,因为没有会报错
# 或者:
request.COOKIES.get('键') # 一般用这个,没有时为空补充:cookie中文乱码问题解决
# 保存:中文 -> bytes -> base64字符串
data = base64.b64encode('中文'.encode()) # 读取: base64字符串 -> bytes -> 中文
user_name = base64.b64decode(data).decode()
二、Session
1.session与cookie对比
cookie是在浏览器端保存键值对数据,而session是在服务器端保存键值对数据- 重要敏感的数据(银行卡账号,验证码,余额等),建议存储在服务器端,不能通过cookie保存到浏览器
session的使用依赖cookie
2.Django中session数据的保存

session数据默认保存在django项目的sqlite数据库的django_session这个表中,保存格式如下:

但是这个sqlite是轻量级数据库,性能不太好。生产环境下我们一般是把session保存在redis数据库中的。
3.关于django中的redis设置
(1)安装依赖包
pip3 install django-redis==4.8.0 # 4.8.0适合django1.11.1使用
(2)setting文件的设置:
MIDDLEWARE = [
...
# 开启session中间件,为了请求前能获取sessionid的值
'django.contrib.sessions.middleware.SessionMiddleware',
]
INSTALLED_APPS = [...
# 默认导入django自带的session模块
'django.contrib.sessions',
]# django项目的缓存配置
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": ""
}
}
}# 默认值,表示存到数据库
# SESSION_ENGINE ='django.contrib.sessions.backends.db'
# session数据缓存到Redis中
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"
4.django中的session使用
保存session数据(键值对)
request.session['键'] = 值
读取session数据
request.session.get('键', 默认值)
删除命令
# 删除一个sessoin键值对(注意:键不存在会报错 `KeyError`)
del request.session['键'] # 清除当前访问用户所有的session数据
request.session.flush() # 删除一条表记录
request.session.clear() # 清空字段中的session键值对数据
设置session数据有效时间; 如果不设置,默认过期时间为两周
request.session.set_expiry(value)
- 如果value是一个整数,则 session数据 将在value秒没有活动后过期
- 如果value为0,则 session数据 将在用户 关闭浏览器时过期
- 如果value为None,则 session数据 将在 2周后过期
Django简单设置cookies和session的更多相关文章
- django中cookies和session
django中cookies和session是两个经常使用的用户认证工具.都是类似于字典的数据类型,都是request的内部属性 cookies的读写方法 cookies读,比如username us ...
- Django 设置cookies与获取cookies.
在Django里面,使用Cookie和Session看起来好像是一样的,使用的方式都是request.COOKIES[XXX]和request.session[XXX],其中XXX是您想要取得的东西的 ...
- django之cookies,session 、中间件及跨站请求伪造
cookies 和session 为什么会有cookie? 由于http协议是无状态的,即用户访问过后,不留痕迹(状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被 ...
- Django中的分页,cookies与session
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- django项目 设置session 实现用户登入登出
一.配置文件 settngs.py中 # 使用django认知系统的登录状态装饰器时,没有登录的话,跳往登录页面后路径是/acount/login 需要重新指定 LOGIN_URL = '/user/ ...
- django form组件 cookies,session
django form组件 渲染标签 就是组件里面的字段在前端展示叫做渲染标签 校验数据 用户输入的数据提交给后端组件叫做校验数据 forms组件中定义的字段都是必须传值的(required=Tr ...
- 一个简单的C#获取Session、设置Session类文件
一个简单的C#获取Session.设置Session类文件,本类主要实现大家最常用的两个功能: 1.GetSession(string name)根据session名获取session对象: 2.Se ...
- django cookies与session
1. cookiies # cookies def login(request): print('COOKIES',request.COOKIES) print('SESSION',request.s ...
- Django中的cookie与session
cookie与session的实现原理 HTTP被设计为”无状态”,每次请求都处于相同的空间中. 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来 ...
随机推荐
- ST表学习
啊谈不上学习了.复习一下原理留一下板子. $f\left[i,j \right]$表示以$i$为起点,区间长度为${2}^{j}$的区间最值.以最小值为例,即 $min\left(a\left [ k ...
- ACE_DEBUG buffer
ACE中输出日志时,发现太长会被截断. 1.测试 ] = {}; ACE_OS::memset(buf,); ACE_DEBUG((LM_INFO, ACE_TEXT("##@@##[ %s ...
- 《Cracking the Coding Interview》——第1章:数组和字符串——题目7
2014-03-18 01:55 题目:给定一个MxN矩阵,如果某个元素为0,则将对应的整行和整列置为0. 解法:单独挑出一行和一列作为标记数组.因为某元素为0就全部置为0,所以不论A[i][j]为0 ...
- 《数据结构》C++代码 BFS与DFS
BFS,广度优先搜索,一层一层去遍历图,故称广度优先.实现方式:队列. DFS,深度优先搜索,撞墙才回头的遍历,称为深度优先.实现方式:递归(栈). 这两种遍历方式,是访问图的基本方式.如果拿树做对比 ...
- 【Deep Learning】林轩田机器学习技法
这节课的题目是Deep learning,个人以为说的跟Deep learning比较浅,跟autoencoder和PCA这块内容比较紧密. 林介绍了deep learning近年来受到了很大的关注: ...
- ssm项目中ueditor富文本编辑器的使用
一.下载 https://ueditor.baidu.com/website/index.html 将ueditor放到项目中合适的位置 二 . 配置文件上传路径 在utf8-jsp/jsp/conf ...
- JSP/Servlet Web 学习笔记 DayThree
JSP内置对象 使用JSP语法可以存取这些内置对象来执行JSP网页的Servlet环境相互作用.内置对象其实是由特定的Java类所产生的.每一种内置对象都映射到一个特定的Java类或者端口,在服务器运 ...
- springmvc maven搭建一
一.标题:使用maven搭建一个简单的web工程 二.涉及工具:Eclipse.maven.tomcat8.0.jdk1.8 三.操作: 完善项目:增加src/main/java,src/test/r ...
- 安装bcc
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D4284CDD echo "deb https://repo.i ...
- 【Luogu】P2498拯救小云公主(spfa)
题目链接 我水爆了- - 容易发现可以把两个圆之间连边,左上为起点右下为终点,最小生成树直到起点跟终点连起来,输出边权/2就行. 然后80. 并不理解为什么这可以转化成spfa求最短路,邻接矩阵暴力跑 ...