Django开发之Cookie和Session的用法


前言:状态保持,有时需要保存下来用户浏览的状态,比如用户是否登录过,浏览过哪些商品等。 实现状态保持主要有两种方式:在客户端存储信息使用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': '清除成功'})

结束!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等待着冬天的风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值