Cookie操作
obj = HttpResponse()
# 操作cookie
return obj
# 如果想要操作cookie,你就不得不用obj对象
# 设置cookie
obj.set_cookie(key,value)
# 获取cookie
request.COOKIES.get(key)
# 在设置cookie可以添加一个超时时间,针对ie浏览器需要使用expires
obj.set_cookie(key,value,max_age=3,expires=5)
# 如何主动删除cookie(注销)
obj = redirect('/login/')
obj.delete_cookie('username')
return obj
"""
浏览器不单单会存
而且后面每次访问你的时候还会带着过来
"""
# 校验用户是否登录的装饰器
def login_auth(func):
def inner(request,*args,**kwargs):
request.path_info
request.get_full_path # 能够拿到用户想要访问的url
target_url = request.get_full_path
if request.COOKIES.get('username')
return func(request,*args,**kwargs)
else:
return redirect('/login/?next=%s'%target_url)
return res
return inner
# 用户如果在没有登录的情况下想访问一个需要登录的页面,
# 先跳转到登录页面,当用户输入正确的用户名和密码之后
# 应该跳转到之前想要访问的页面
Session操作
"""
数据是保存在服务端的(存在哪呢??),给客户端返回的是随机字符串
sessionid: 随机字符串
1.在默认情况下,操作session的时候需要django默认的一张django_session表
数据库迁移命令,django会自己创建很多表,而django_session就是其中的一张
2.django默认session的过期时间是14天,但是也可以认为的修改它
"""
# 设置session
request.session['key'] = value
# 获取
request.session.get('key')
# 设置过期时间
request.session.set_expiry()
"""
括号内可以放四种类型的参数
1.整数 多少秒
2.日期对象 到指定日期就失效
3.0 一旦当前浏览器窗口关闭立刻失效
4.不写 失效时间就取决于django内部全局session默认的失效时间
"""
# 清除session
request.session.delete() # 只删服务端的,客户端的不删
request.session.flush() # 浏览器和服务端都清空
request.session是一个对象
django session表中的数据条数是取决于浏览器的,同一个计算机上同一个浏览器只会有一条数据生效
(当session过期的时候可能会出现多条数据对应一个浏览器,不会持续很久,内部会自动清楚)
主要是为了节省服务端数据库资源