cookie与session的基本认识(浏览器与服务器之间的状态保持)

cookie

什么是 cookie,为什么要有这个Cookie

cookie:饼干. 其实是一份小数据, 是服务器给客户端,并且存储在客户端上的一份小数据
为什么要有这个Cookie:http的请求是无状态。 客户端与服务器在通讯的时候,是无状态的,其实就是客户端在第二次来访的时候,服务器根本就不知道这个客户端以前有没有来访问过。 为了更好的用户体验,更好的交互 [自动登录],其实从公司层面讲,就是为了更好的收集用户习惯[大数据]

cookie的特点:

1.键值结构
2.cookie是基于域名安全的,不同域名之间是不可以进行相互的访问的
3.当浏览器请求某一个网站,会将当前网站所有cookie提交给服务器
4.cookie数据不允许存储敏感信息,密码,支付密码

cookie的创建

Response.set_cookie()

子项目的urls.py中编写路径

url(r'createcookie/',createcookie),

view.py文件中写入以下代码:

def createcookie(request):
    #set_cookie(self, key, value='', max_age=None, expires=None, path='/',
     #          domain=None, secure=False, httponly=False):
    response_object = HttpResponse('OK')
    response_object.set_cookie('name','xiaowang',max_age=60)
    response_object.set_cookie('name1','xiaowang1',max_age=60*60)

    return response_object

max_age=60 表示最大缓存时间为60秒
在这里插入图片描述
键值结构:
在这里插入图片描述

cookie的读取

Response.COOKIES.get(键名)
子项目的urls.py中编写路径

url(r'readcookie/',readcookie),

view.py文件view.py文件中写入以下代码:

def readcookie(request):
    #用来获取的是cookie的值,如果不存在,可以设置默认值
    #request.COOKIES.get()
    print(request.COOKIES.get('name','校长'))
    return HttpResponse('读取成功')

cookie的删除

子项目的urls.py中编写路径

  url(r'deletecookie/',deletecookie),

view.py文件中写入以下代码:

def deletecookie(request):
    response = HttpResponse('删除成功')
    response.delete_cookie('name1')
    return

session

什么是session

session:会话 , Session是基于Cookie的一种会话机制。 Cookie是服务器返回一小份数据给客户端,并且存放在客户端上。 Session是,数据存放在服务器端。

数据库存储session

1.安装应用

如果需要使用数据库存储session,要安装应用
在项目的同名文件夹下的settings.py中MIDDLEWARE内输入:
在这里插入图片描述

数据库中的session

在这里插入图片描述
在这里插入图片描述
注意点:在Django项目中,session的引擎没有设置,因为这是默认的存储方式

django1.11上session配置Redis数据库

1.安装第三方扩展

在这里插入图片描述
如果权限不够则sudo开头

配置引擎(redis作为session的保存数据库的设置)

在项目的同名文件夹下的settings.py内输入:
可以参考官方文档:https://docs.djangoproject.com/en/2.2/ref/settings/
在这里插入图片描述

在终端redis查看session内容

在这里插入图片描述

session的创建

子项目的urls.py中编写路径

     url(r'createsession/',createsession),

view.py文件中写入以下代码:

def createsession(request):
    request.session['age']=18
    return HttpResponse('session_ok')

session存储四种方式

Django中的Session有3种存储方式:放在数据库、缓存或者文件系统中,下面分别予以介绍。

将Session存储在数据库中:
如果要将Session存储在数据库中,我们需要将 ’django.contrib.sessions’ 加入到INSTALLED_APPS 变量中。然后运行 manage.py syncdb 在数据库中创建相应的存储Session的数据库表。

将Session存储在缓存中:
如果想获得更好的性能,我们可以将Session保存在缓存中。这里有两种配置方式:一种是设置SESSION_ENGINE 为”django.contrib.sessions.backends.cache” 。这是一种简单配置,Session将之被保存在缓存中,但是不保证Session总是能取到(比如缓存溢出时Session会丢失);另一种方式是设置SESSION_ENGINE 为 “django.contrib.sessions.backends.cached_db”。这种方式下,Session在保存到缓存的同时还会被保存到数据库中,当Django在缓存中找不到Session时,会从数据库中找到。第二种方式会有一点点性能开销,但是安全性和冗余性更好。

将Session存储在文件系统中:
还有一种方式是将Session存储在文件系统中。需要设置SESSION_ENGINE 为”django.contrib.sessions.backends.file”,这时你还需要同时设置SESSION_FILE_PATH 变量,它代表Session文件保存的位置,缺省的设置一般是tempfile.gettempdir(),表示系统的临时目录。这里要确保应用程序对那个目录有读写的权限。

4.这个是混合存取:
django.contrib.sessions.backends.cached_db

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值