Django边学边记--状态保持(cookie和session)
Cookie
概念:
- Cookie,也叫Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密),好比会员卡或餐票。
特点:
- Cookie是由服务器端生成的一小段信息,发送给User-Agent(一般是浏览器)保管。
- 当浏览器请求某网站时,会将本网站下所有Cookie信息提交给服务器。
- Cookie以键值对的格式进行信息的存储。
- Cookie基于域名安全,不同域名的Cookie是不能互相访问的。
- Cookie有过期时间,如果不指定,关闭浏览器就过期
- 因为电脑上的浏览器可能被其它人使用,建议cookie不要存储敏感信息如密码。
- 典型应用:记住用户名,购物车,网站的广告推送等。
设置:
- 需要一个HttpResponse类(或子类)对象,该对象中有一个方法set_cookie,通过[对象.set_cookie(key=“",value="”,max_age=XXX[秒],xxx)]设置 ,过期时间可以用max_age 和 expires 两种形式来设置,max_age 的值为秒数,expires的值为具体过期时间。
获取:
- cookie保存在浏览器返回的request对象的COOKIES属性里面,(在学习HttpReqeust对象的属性时,说过COOKIES是一个标准的Python字典,包含所有的cookie,键和值都为字符串)可以通过dict['键'] 或 .get('键') 的方法获取。
Session
概念:
- 类似于cookie,对于敏感、重要的信息,需要在服务器端进行状态保持就用session,服务端将session的id给浏览器,数据存在服务器。
特点:
- 储存在服务器端,通过设置SESSION_ENGINE项指定Session数据存储的方式,可以存储在数据库、缓存、Redis等
- Session包括三个数据:键,值,过期时间
- session的id是通过cookie给浏览器的,如果想使用Session,浏览器必须支持Cookie,否则就无法使用Session了,也是就是session依赖于cookie。
操作:
- 与cookie不同的是 session 的设置和取值全部通过Httprequest 对象的Session属性进行读写操作
- 增、改
request.session['键']=值
- 查
request.session.get('键',默认值)
request.session['键']- 删
del request.session['键'] 删除会话中的指定键及值,在存储中只删除某个键及对应的值
request.session.clear() 清除所有会话,在存储中删除值部分
request.session.flush() 清除会话数据,在存储中删除会话的整条数据- 设置会话的超时时间,(默认两个星期)
- 如果value是一个整数,会话将在value秒没有活动后过期
- 如果value为0,那么用户会话的Cookie将在用户的浏览器关闭时过期
- 如果value为None,那么会话永不过期
request.session.set_expiry(value)
Django边学边记--状态保持(cookie和session)的更多相关文章
- Django(十三)状态保持 —— cookie与session+ajax异步请求+session记住登录状态+cookie记住登录名密码
一.状态保持的概述 http协议是无状态的.下一次去访问一个页面时并不知道上一次对这个页面做了什么.因此引入了cookie.session两种方式来配合解决此问题. Duplicate entry:重 ...
- Django学习笔记之URL与视图cookie和session
cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了 ...
- django基础之Ajax、分页、cookie与session
目录: Ajax之json Ajax简介 jquery实现的ajax js实现的ajax django分页器 COOKIE与SESSION 一.Ajax之json 1.什么是json? 定义: JSO ...
- Django边学边记—视图
一. url (一)配置 在项目/settings.py中通过ROOT_URLCONF指定url配置 ROOT_URLCONF = 'XXXX.urls' 打开 项目/urls.py 配置 (二)语法 ...
- Django边学边记——中间件
特点 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,用于全局修改Django的输入或输出. 每个中间件组件负责做一些特定的功能.中间件全部注册在sett ...
- Django边学边记—静态文件
概念 项目中的CSS.图片.js都是静态文件 一般会将静态文件放到一个单独的目录中,以方便管理 在html页面中调用时,也需要指定静态文件的路径,Django中提供了一种解析的方式配置静态文件路径 静 ...
- Django边学边记—模板
功能 产生html,且不仅仅是一个html 包含: 静态内容:html,css,js 动态内容:模板语言 使用 一般使用 Django中提供的简写函数render调用模板 render(request ...
- Django边学边记—模型查询
查询集 两大特性 惰性执行:创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代.序列化.与if合用 缓存:查询集的结果被存下来之后,再次查询时会使用之前缓存的数据 返回列 ...
- Django边学边记—新手Django建项目各流程细节
一.准备虚拟环境 1)安装 virtualenv pip install virtualenv 2)virtualenvwrapper pip install virtualenvwrapper-wi ...
随机推荐
- MySQL 条件查询
查询条件 having having的功能和where一样,都是用来筛选查询,不同的是,where在分组之前用,having必须在分组之后使用. # 查询每个部门大于30岁的平均工资,并且保留平均工资 ...
- SSM自学笔记(五)
10.MyBatis入门操作 1.MyBatis的简介 1.1 原始jdbc操作(查询数据) 1.2 原始jdbc操作(插入数据) ##### 1.3 **原始**jdbc操作的分析 原始jdbc开发 ...
- Nginx 真实的 IP
配置 Nginx 如果你的 Java 项目使用了 Nginx 代理,那么还需要进行以下配置,才能顺利获取到真实的 IP,否则只能获取到 127.0.0.1. 在 Nginx 的配置文件里,找到你 Ja ...
- 五、Abp vNext 基础篇丨博客聚合功能
介绍 业务篇章先从客户端开始写,另外补充一下我给项目起名的时候没多想起的太随意了,结果后面有些地方命名冲突了需要通过手动using不过问题不大. 开工 应用层 根据第三章分层架构里面讲到的现在我们模型 ...
- C#中IEumerable的简单了解
参考网址:https://blog.csdn.net/qq_39806817/article/details/115024666 一.IEnumerable简单介绍IEnumerable是可枚举类型, ...
- Vue实现在前端导出Excel 方法1
也可以去看我的方法2:https://www.cnblogs.com/yingyigongzi/p/10915403.html ------------------------------------ ...
- windows下mysql5.7.17配置
1.官网下载mysql5.7.17 64位 https://dev.mysql.com/downloads/mysql/ 2.安装完解压到E盘主目录下,改文件名为mysql 3.配置环境变量 我的电脑 ...
- Tars | 第3篇 Tars中期汇报测试文档(Java语言实现Subset路由规则)
目录 前言 1. 任务介绍 2. 测试模拟方案 2.0 *前置工作 2.1 添加路由规则 2.2 添加存活节点 2.3 [输出]遍历输出当前存活节点 2.4 [核心]对存活节点按subset规则过滤 ...
- MyBatis学习总结(四)——字段名与实体类属性名不相同的冲突的解决
表中的字段名和表对应实体类的属性名称不一定都是完全相同的,这种情况下的如何解决字段名与实体类属性名不相同的冲突.如下所示: 一.准备演示需要使用的表和数据 CREATE TABLE my_user( ...
- Django——实现最基础的评论功能(只有一级评论)
我对评论功能的理解: --------(1)数据库建一个评论的表 --------(2)前端建一个提交评论的form表单 --------(3)表单提交评论内容后写入到数据库评论表中 -------- ...