cookies和session使用详解
cookies
在Django 服务器端来设置 设置浏览器的COOKIE
HttpResponse 关于COOKIE的方法
- 添加、修改COOKIE
HttpResponse.set_cookie(key, value=’’, max_age=None, expires=None)- key:cookie的名字
- value:cookie的值
- max_age:cookie存活时间,秒为单位
- expires:具体过期时间,当不指定max_age和expires 时,关闭浏览器时此数据失效
- 删除COOKIE
HttpResponse.delete_cookie(key):删除指定的key 的Cookie。 如果key 不存在则什么也不发生。
Django中的cookies(都是在views层完成)
-
使用 响应对象HttpResponse 等 将cookie保存进客户端
- 方法一:
resp = HttpResponse()
resp.set_cookie(‘cookies名’, cookies值, 超期时间) - 方法二:
resp = render(request,‘xxx.html’,locals())
resp.set_cookie(‘cookies名’, cookies值, 超期时间) - 方法三:
HttpResponseRedirect等同样可以
- 方法一:
-
获取cookie,通过 request.COOKIES 绑定的字典(dict) 获取客户端的 COOKIES数据
value = request.COOKIES.get(‘cookies名’, ‘没有值!’)
print("cookies名 = ", value)
- 注:Chrome 浏览器 可以通过 ctrl+shift+i 的
Application
>>Storage
>>Cookies
查看和操作浏览器端所有的 Cookies 值
session
session对象是一个类似字典的SessionStore类型的对象, 可以用字典的方式进行操作
- 保存 session 的值到服务器
- request.session[‘KEY’] = VALUE
- VALUE = request.session.get(‘KEY’, 缺省值)
- 删除session的值
- del request.session[‘KEY’]
- 注: 当session保存在数据库中时,需要迁移数据库
示例代码
#django views层
from django.conf.urls import url
from django.http import HttpResponse
from django.shortcuts import render
#存cookie
def set_cookies(request):
resp = HttpResponse('set is ok !')
#set_cookie(key,value,max-age)
resp.set_cookie('username','guoxiaonao',60*2)
return resp
#获取cookie
def get_cookies(request):
username = request.COOKIES.get('username')
if username:
html = '欢迎~%s'%(username)
else:
html = '请登录'
return HttpResponse(html)
#存session
def set_session(request):
request.session['username'] = 'Terry_s'
return HttpResponse('set is ok')
##获取session
def get_session(request):
username = request.session.get('username')
html = 'session 获取到 %s' % (username)
return HttpResponse(html)