Django开发之Cookie和Session的用法
- 1.客户端Cookie
- 2.服务器端Session
-
- 2.1 对象及方法
- 2.2 案例
前言:状态保持,有时需要保存下来用户浏览的状态,比如用户是否登录过,浏览过哪些商品等。 实现状态保持主要有两种方式:在客户端存储信息使用Cookie。在服务器端存储信息使用Session。
1.客户端Cookie
Cookie的特点:
- Cookie以键值对的格式进行信息的存储。
- Cookie基于域名安全,不同域名的Cookie是不能互相访问的,如访问itcast.cn时向浏览器中写了Cookie信息,使用同一浏览器访问baidu.com时,无法访问到itcast.cn写的Cookie信息。
- 当浏览器请求某网站时,会将浏览器存储的跟网站相关的所有Cookie信息提交给网站服务器。
注意:Cookie,就是把信息存储在了浏览器端,所以我们不能存储一些重要的私密信息,使用场合:记住用户名,网站的广告推送。
代码实现:
def cookie_set(request):
request.set_cookie('c1', '你好c1')
return JsonResponse({'ret': 0})
def cookie_get(request):
if 'h1' in request.COOKIES:
c1 = request.COOKIES['c1']
return JsonResponse({'ret': 0,'msg':c1})
return JsonResponse({'ret': 1,'msg':'没有获取到'})
2.服务器端Session
对于敏感、重要的信息,建议要储在服务器端,不能存储在浏览器中,如用户名、余额、等级、验证码等信息。
2.1 对象及方法
1.以键值对的格式写session。
request.session[‘键’]=值
2.根据键读取值。
request.session.get(‘键’,默认值)
3.清除所有session,在存储中删除值部分。
request.session.clear()
4.清除session数据,在存储中删除session的整条数据。
request.session.flush()
5.删除session中的指定键及值,在存储中只删除某个键及对应的值。
del request.session[‘键’]
6.设置会话的超时时间,如果没有指定过期时间则两个星期后过期。
request.session.set_expiry(value)
注意:
- 如果value是一个整数,会话将在value秒没有活动后过期。
- 如果value为0,那么用户会话的Cookie将在用户的浏览器关闭时过期。
- 如果value为None,那么会话永不过期。
2.2 案例
def set_session(request):
request.session["username"] = "fly"
# request.session.set_expiry(5)
return JsonResponse({'ret': 0,'msg':"设置session"})
def get_session(request):
if request.session.has_key('username'):
username = request.session["username"]
return JsonResponse({'ret': 0, 'msg': username})
else:
return JsonResponse({'ret': 1, 'msg': '没有获取到'})
def clear_session(request):
# request.session.clear()
request.session.flush()
return JsonResponse({'ret': 0, 'msg': '清除成功'})
结束!!!