cookie和session

mac2026-09-26  9

cookies

cookies是保存在客户端浏览器上的存储空间,通常用来记录浏览器端自己的仔细和当前连接的确认信息。

cookies在浏览器上是以键值对的形式进行存储的,键和值都是以ASCII字符串的形式存储的(不能是中文字符串)。

在Django服务器端俩设置 设置浏览器的COOKIES必须通过HttpResponse对象来完成

HtttpResponse关于COOKIE的方法

添加、修改COOKIE HttpRespisne.set_cookie(key, value=’’, max_age=None,epires=None) key: cookie的名字value: cookie的值max_age: cookie存活时间,秒为单位expires: 具体过期时间当不指定max_age和expires时,关闭浏览器时此数据失效。 删除COOKIE HttpResponse.delete_cookie(key)删除指定的key的Cookie.如果key不存在则什么也没发生。

Django中的cookies

使用响应对象HttpResponse等将cookie保存进客户端

方法一:from django.http import HttpResponse resp = HttpResponse() resp.set_cookie('cookies名‘, cookie值, 超时时间)

如:

resp = HttpResponse() resp.set_cookie('myvar', 'weimz', 超期时间

方法二,使用render对象

from django.shortcuts import render resp = render(request, 'xxx.html', locals()) resp.set_cookie('cookies名’, cookies值, 超期时间)

获取cookie

Chrome 浏览器 可能通过开发者工具的Application >> storage >> Cookies 查看和操作浏览器所有的COOKIES值

以下示例均在视图函数中调用

添加cookie

# 为浏览器添加键为 my_varl, 值为123, 过期时间为1小时的cookie responds = HttpResponse("已添加 my_varl, 值为123“) responds.set_set_cookie('my_varl', 123, 3600) return responds

修改cookie

# 为浏览器添加键为 my_varl,修改值为456, 过期时间为2小时的cookie responds = HttpResponse('已修改 my_varl,值为456’) responds.set_cookie('my_varl', 456, 3600*2) return responds

删除cookie

responds = HttpResponse('已删除 my_varl") responds.delete_cookie('my_varl') return responds

获取cookie

value = request.COOKIES.get('my_varl', '没有值!‘) print(’cookie my_varl = ', value) return HttpResponse('my_varl:' + value)

session回话控制

什么是session

session又名会话控制,是在服务器上开启一段空间用于保留浏览器和服务器交互时的重要数据

session的起源

http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态实现状态保持的方法:在客户端或服务器存储与绘画有关的数据推荐使用session方式, 所有数据存储在服务器端

实现方式

使用session需要在浏览器客户端启动cookie,且用在cookie中存储sessionid每个客户端都可以在服务器端有一个独立的session注意:不同的请求者之间不会共享这个数据,与请求者一一对应

Django启用Session

在 settings.py 文件中

向INSTALLED_APPS列表中添加:

INSTALLED_APPS = [ # 启用 sessions 应用 ‘django.contrib.sessions', ]

向MIDDLEWARE_CLASSES列表中添加:

MIDDLEWARE = 【 # 启用 Session 中间件 ’django.contrib.sessions.middleware.SessionMiddleware', ]

session的基本操作

session对于像是一个类似于字典的SessionStore类型的对象,可以用类拟于字典的方式进行操作session 只能够存储序列化的数据,如字典,列表等。 保存session的值到服务器 request.session[‘KEY’] = VALUE 获取session的值 VALUE = request.session[‘KEY’]VALUE = request.session.get(‘KEY’, 缺省值) 删除session的值 del request.session[‘KEY’] 在 settings.py中有关session的设置 SESSION_COOKIE_AGE 作用:指定sessionid在cookies中的保存时长(默认是2周)如下:SESSION_COOKIE_AGE = 606024*14 SESSION_EXPIRE_AT_BROWSER_CLOSE = TRUE 设置只要浏览器关闭时,session就失效(默认为False)

模块

import django.conf.global_settings

注:当使用session时需要迁移数据库,否则会出现错误

python3 manage.py makemigrations python3 manage.py migrate
最新回复(0)