一、cookies
cookies在浏览器中是以键值对的形式存储,且均已ASDII字符串的形式存储。
1、存储
HttpResponse.set_cookie(key, value=’’, max_age =None, expires=None)
- key:cookie的名字
- value:cookie的名字
- max_age:cookie存活时间,秒为单位
- expires:具体过期时间
当不指定max_age和expires时,关闭浏览器时此数据失效
例:views.py
from django.shortcuts import render
from django.http import HttpResponse
def set_cookies(request):
resp = HttpResponse('set cookis is ok')
resp.set_cookie('uuname', 'wzh', 500)
return resp
2、删除cookies
HttpResponse.delete_cookie(key)
删除指定key的cookie。如果key不存在则说明都没发生。
3、获取cookies
通过requestion.cookies绑定的字典获取客户端的cookies数据
value = rquest.COOKIES.get(‘cookies名’, ‘默认值’)
二、session
session是在服务器上开辟一段空间用于保留浏览器和服务器交互时的重要数据。
实现方式:
使用session需要在浏览器客户端启动cookie,且在cookie中存储sessionId。每个客户端都可在服务器端有一个独立的session。注意不同的请求之间不会共享这个数据,与请求者一一对应。
1、session初始配置
(1)在INSTALLED_APPS列表中添加
INSTALLED_APPS = [\
# 启用session应用
‘django.contrib.sessions’,
]
(2)向MIDDLEWARE列表中添加:
MIDDLEWARE = [
# 启用session中间件
‘django.contrib.sessions.middleware.SessionMiddleware’
]
2、session的使用
session是一个类似于字典的SessionStore类型的对象,可用类似于字典的方法进行操作。session能够存储如字符串,整型,字典,列表等
(1)保存session的值到服务器
reques.sesion[‘KEY’] = VALUE
(2)获取session的值
value = request.session[‘KEY’]
value = request.session.get(‘KEY’, 默认值)
(3)删除session
del request.session[‘KEY’]
例:views.py
def set_session(request):
request.session['uuname'] = 'wzh'
return HttpResponse('set session is ok')
def get_session(request):
value = request.session['uuname']
return HttpResponse('session value is %s'%(value))
3、settings.py中相关配置项
(1)SESSION_COOKIE_AGE
指定sessionid在cookies中的保存时长(默认2周),如
SESSION_COOKIE_AGE = 60*60*24*7*2
(2)SESSION_EXPIRE_AT_BROWSER_CLOSE = True
设置只有浏览器关闭是,session就失效(默认是False)
注:
- Django中的session数据存储在数据库中,所以使用session前需确保已经执行过migrare。
- django_session表时单表设计,且该表数据量持续增持(浏览器故意删掉sessionid且过期数据未删除)
- 可每晚执行python3 manage.py clearsessions(该命令可删除已过期session数据)