Django Web开发-cookie与session

一.cookie

1.1 什么是cookie?

cookie是由服务器生成,存储在浏览器端的一小段文本信息。

cookie的特点:

1)以键值对方式进行存储。

2)通过浏览器访问一个网站时,会将浏览器存储的跟网站相关的所有cookie信息发送给该网站的服务器。

3)cookie是基于域名安全的。

4)cookie是有过期时间的,如果不指定,默认关闭浏览器之后cookie就会过期。

1.2 cookie的作用

HTTP协议是无状态的,每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求没有任何的关系,而cookie就是为了满足人们对http请求状态的需求而诞生的。

1.3 Django中cookie的使用

  • 设置cookie

    示例

def cookie_set(request):
    response = HttpResponse("<h1>设置Cookie</h1>")
    response.set_cookie(‘your_cookie‘, ‘你好‘)
    return response

常用:

rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt=‘加密字符串‘, max_age=None, ...)
  • 获取cookie

    示例:

def cookie_get(request):
    if ‘your_cookie‘ in request.COOKIES:
        response = HttpResponse("获取Cookie")
    	return response

常用:

request.COOKIES[‘key‘]
request.get_signed_cookie(key, default=RAISE_ERROR, salt=‘‘, max_age=None)
  • 总结
方法 描述
rep.set_cookie(key,value,...) 设置cookie
rep.set_signed_cookie(key,value,salt=‘加密字符串‘, max_age=None, ...) 加盐的cookie设置,参数:1)key, 键2)value=‘‘, 值 3) max_age=None, 超时时间 4) expires=None, 超时时间(IE requires expires, so set it if hasn‘t been already.) 5) path=‘/‘, Cookie生效的路径,/ 表示根路径,特殊的:根路径的cookie可以被任何url的页面访问 6) domain=None, Cookie生效的域名 7) secure=False, https传输 9) httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
request.COOKIES[‘key‘] 普通cookie获取
request.get_signed_cookie(key, default=RAISE_ERROR, salt=‘‘, max_age=None) 加盐的cookie获取,参数:1) default: 默认值 2) salt: 加密盐 3) max_age: 后台控制过期时间

二.session

对于敏感、重要的信息,建议要储在服务器端,不能存储在浏览器中,如用户名、余额、等级、验证码等信息,这时候就要用到session。

session将重要信息保存在服务器端,返回给客户端一个随机字符串,保存在cookie中。

session的特点:

    1. session是以键值对进行存储的。
    1. session依赖于cookie。唯一的标识码保存在sessionid cookie中。
    1. session也是有过期时间,如果不指定,默认两周就会过期。

2.1 Django Session的常用方法

用途 方法
获取 1) request.session[‘k1‘] 2) request.session.get(‘k1‘,None)
设置 1)request.session[‘k1‘] = "abc" 2)request.session.setdefault(‘k1‘,"abc")
删除Session中数据 del request.session[‘k1‘]
键、值、键值对常用方法 1)request.session.keys() 2)request.session.values() 3)request.session.items() 4)request.session.iterkeys() 5)request.session.itervalues() 6)request.session.iteritems()
会话session的key request.session.session_key
将所有Session失效日期小于当前日期的数据删除 request.session.clear_expired()
检查会话session的key在数据库中是否存在 request.session.exists("session_key")
删除当前会话的所有Session数据 request.session.delete()
删除当前的会话数据并删除会话的Cookie。 request.session.flush()
设置会话Session和Cookie的超时时间 request.session.set_expiry(value) 如果value是个整数,session会在些秒数后失效。 如果value是个datatime或timedelta,session就会在这个时间后失效。 如果value是0,用户关闭浏览器session就会失效。 如果value是None,session会依赖全局session失效策略。

原文地址:https://www.cnblogs.com/luckyleaf/p/12690427.html

时间: 2024-10-28 22:41:36

Django Web开发-cookie与session的相关文章

{Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 xxx 八 xxx 一 会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了.从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束.在通话过程中,你会向10086发出多个请求,那么这多个请

七日Python之路--第十二天(Django Web 开发指南)

<Django Web 开发指南>.貌似使用Django1.0版本,基本内容差不多,细读无妨.地址:http://www.jb51.net/books/76079.html (一)第一部分 入门 (1)内置数字工厂函数 int(12.34)会创建一个新的值为12的整数对象,而float(12)则会返回12.0. (2)其他序列操作符 连接(+),复制(*),以及检查是否是成员(in, not in) '**'.join('**')   或  '***%s***%d' % (str, int)

Django Web开发学习笔记(5)

第五部分 Model 层 创建一个app工程.app和project的区别引用DjangoBook的说法是: 一个project包含很多个Django app以及对它们的配置. 技术上,project的作用是提供配置文件,比方说哪里定义数据库连接信息, 安装的app列表, TEMPLATE_DIRS ,等等. 一个app是一套Django功能的集合,通常包括模型和视图,按Python的包结构的方式存在. 例如,Django本身内建有一些app,例如注释系统和自动管理界面. app的一个关键点是它

Django Web开发学习笔记(4)

第四章 模板篇 上一章的内容,我们将HTML的代码和Python代码都混合在了在view.py的文件下.但是这样做的坏处无疑是明显的,引用DjangoBook的说法: 对页面设计进行的任何改变都必须对 Python 代码进行相应的修改. 站点设计的修改往往比底层 Python 代码的修改要频繁得多,因此如果可以在不进行 Python 代码修改的情况下变更设计,那将会方便得多. Python 代码编写和 HTML 设计是两项不同的工作,大多数专业的网站开发环境都将他们分配给不同的人员(甚至不同部门

Django Web开发学习笔记(1)

一.Python的标准类型 (1)bool型 >>> bool("") False >>> bool(None) False >>> bool(False) False (2)数值型 Python的数值型数据包含两类:int和float型数据,需要注意的是还有一个complex的类型,也就是复数类型 >>> a = complex(1,3) >>> a (1+3j) >>> b

Django web 开发指南 no such table:

在学习django web开发指南时,发布新博客点击save后会有error提示:no such table balabalabala... 百度了一下说重新运行manage.py syncdb 就可以,我试了还是报错,然后仔细看了下提示信息,发现是版本问题,并且他也给出了解决方法: 运行'manage.py makemigrations', 这样可以'make new migrations' 然后运行'manage.py migrate', 这样可以'apply them', 问题解决~

第十一章 Django框架学习——Cookie和session

第十一章 Django框架学习--Cookie和session 一.Cookie简介 二.装饰器版登录校验 三.session简介 四.如何在CBV中使用装饰器 一.Cookie简介 什么是Cookie(what): Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的原理:由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上Cookie,这样服务器就能

Django中使用cookie和session

目录 Django中使用cookie与session 一.cookie 二.session Django中使用cookie与session 一.cookie cookie的由来:由于HTTP协议是无状态的,每次请求都是独立的请求,为了能够保存某些数据,cookie便产生了. 什么是cookie:cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对.下次访问服务器的时候,浏览器会自动携带这些键值对,以便服务器提取有用数据. cookie的原理:cookie的工作原理是:

Django web开发【5】 实现标签功能

标签tag在很多web2.0应用中都很常见,标签其实就是关联某些信息的一个关键字.打标签实际上就是给内容分配标签的过程,它通常由作者或者用户实现.标签之所有这么流行是因为它允许用户对自己创建的博客.图像.链接等等进行分类. 既然我们要创建的是社交型网络收藏夹,标签自然非常重要,为了引进标签,我们需要一个机制来允许用户在提交bookmarks的时候带上标签一起存进数据库,并且可以浏览某个标签下的所有bookmarks. Tag 数据模型 标签需要保存在数据库中,并且与bookmarks相关联,所以