加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

Django中Cookie和Session简介

发布时间:2023-05-17 10:50:55 所属栏目:语言 来源:
导读:在 Django 中可以通过 HTML Form 表单实现登录注册功能,但是在这之前,我们有必要简单介绍一下 Cookie 和 Session。比如在某些场景下,在排除用户手动删除浏览器 Cookie 以及 Cookie 未过期的情况下,用户如果在某网

在 Django 中可以通过 HTML Form 表单实现登录注册功能,但是在这之前,我们有必要简单介绍一下 Cookie 和 Session。比如在某些场景下,在排除用户手动删除浏览器 Cookie 以及 Cookie 未过期的情况下,用户如果在某网站登录过一次,下次访问这个网站,用户不需要输入用户名和密码就可以进入网站,这就是通过 Cookie 和 Session 实现的。本节先对 Cookie 进行介绍。

1. Django中Cookie简述

1) Django中COOKIE的使用方法

大家在学习 HTTP 超文本传输协议的时候,就已经知道 HTTP 是一种无状态的传输协议,对于事务处理没有记忆能力。对于客户端浏览器发出的请求,Web 服务器无法区分是不是源自于同一个浏览器。所以,这时就需要额外的数据用于维持会话。

我们通常用来它来记录浏览器端的信息和当前连接的确认信息。Cookie 保存在客户端浏览器存储空间中并以键值对的形式进行存储,也就是说 Cookie 也是一个类字典对象。

在 Django 服务器端来设置浏览器的 Cookie 必须通过 HttpResponse 对象来完成,那么如何通过 HttpResponse 实现 Cookie 添加、修改或者删除呢?这里提供了一些方法,如下所示:

HttpResponse.set_cookie(key="", value='', max_age=None, expires=None) #设置或者添加 Cookie

上面的参数分别表示:key、value分别表示 COOKIES 的键与值;max_age 代表 COOKIES 的存活时间,以秒为单位;expires 表示具体过期时间,当不指定 max_age 和expires 时,关闭浏览器时此数据失效。当然还有一些其他的参数,比如说 domain 用来绑定域名从而实现跨域。那么又如何删除一个 COOKIE 呢?方法如下所示:

HttpResponse.delete_cookie(key) 

实例演示,代码如下所示:

from django.http import HttpResponse

#设置添加cookie

def set_cookie_view(request):

resp=HttpResponse()

resp.set_cookie('username','cbiancheng',3600)

return resp

#得到cookie的值使用get方法

def get_cookie_view(request):

value = request.COOKIES.get('username')

return HttpResponse('--MY COOKIE is--%s'%value)

然后配置相应的路由,如下所示:

urlpatterns=[

path('set_cookie/',views.set_cookie_view),

path('get_cookie/',views.get_cookie_view),]

最后访问相应的路由,地址栏输入 1270.0.0.1:8000/index/set_cookie,使用谷歌调试工具,点击 Network 找到响应头,Cookie 都是需要进行加密处理的,在这里为了方便给大家演示,没有进行加密操作。如下所示:

Response Headers

Content-Length: 0

Content-Type: text/html; charset=utf-8

Date: Thu, 04 Jun 2020 08:36:37 GMT

Server: WSGIServer/0.2 CPython/3.7.4

Set-Cookie: username=cbiancheng; expires=Thu, 04 Jun 2020 09:36:37 GMT; Max-Age=3600; Path=/

X-Frame-Options: SAMEORIGIN

访问 1270.0.0.1:8000/index/get_cookie,直接可以得到 Cookie 的值,大家也可以自己尝试一下。

从上述过程中,我们知道了如何在 Django 中添加 Cookie 或者对其进行取值,但是你可能会发现这个过程其实是不安全的,很容易造成 Cookie 的泄露或者被截取的风险,而且不同浏览器的版本对存储 Cookie 的数量也有限制,且 Cookie 自身也有长度限制最大不可超过 4kb,否则会被自动截断。

一般情况下为了降低 Cookie 带来的安全性问题,可以采用和 Session 一起使用的策略。那么 Session 在 Django 中又如何应用呢?在下一节我们会对 Session 展开讲解。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!