django 之cookie、session

cookie是存贮在本地浏览器的一些数据,这些可以数据一般与访问网站有关,比如大家时常访问某些网站,登录时会进行用户验证,验证成功后本地cookie可以存储一些数据,比如一个字符串,下一次用户在访问网站时,可以带着cookie中的这个字符串,网站服务器在请求中,找到这个字符串则认为用户已经登录,无须再次登录。cookie常备用来做用户验证已经多长时间免登录的操作,在django中,也有cookie的功能。如下

def login(request):
    if request.method=='POST':
        user_name=request.POST.get('name')
        user_pwd=request.POST.get('password')
        user=models.user.objects.filter(name=user_name)
        if len(user)==0:
            return redirect('/login/')
        else:
            user=user.first()
            if user.password==user_pwd:
                res=redirect('/home/')
                res.set_cookie('current_user',user_name)
                res.set_cookie('script','<script>$(.</script>')
                #设置cookie键值对 设置cookie
                return res
            else:
                return redirect('/login/')
    else:
        return render(request,'login.html')

另外在另一端验证的时候则需要在cookie中取值。

def home(request):
    current_user=request.COOKIES.get('current_user','请登录')
    #通过cookie取值
    if current_user=='请登录':
       return render(request,'home.html',{'current_user':current_user})
    else:
        return render(request,'home2.html',{'current_user':current_user})

session与cookie相比更适合放一些私密的东西,session存储在服务器端。用户登录网站成功时,session会生成一个随机字符串,并将这个随机字符串保存在session中,在session内部生成一个键值对,其中以随机字符串为健,用户信息为对应的值。同时也会将随机字符串返回用户,用户将随机字符串存放在cookie里,下次用户登录cookie携带随机字符串,session通过随机字符串找到相对应用户信息进行用户验证。
在django中,上述这些已经为大家封装好,大家只需要调用就好如下。

def login(request):
    if request.method=='POST':
        user_name=request.POST.get('name')
        user_pwd=request.POST.get('password')
        user=models.user.objects.filter(name=user_name)
        if len(user)==0:
            return redirect('/login/')
        else:
            user=user.first()
            if user.password==user_pwd:
                #session设置值
                request.session['user']=user_name
                request.session['is_login']=True
                res=redirect('/home/')
                return res
            else:
                return redirect('/login/')
    else:
        return render(request,'login.html')

session取值

def home(request):
   if request.session.get('is_login',None):
       return render(request,'home.html')
    else:
        return render(request,'home2.html')

其中session取值时,request.session[‘is_login’]也可以取值,但是这个有一个隐患,也就是如果session中没有这个值则会报错。相对应情景为用户还从没有登录而我们去取用户信息,则取不到。而用get()则可以设置默认值,即取不到值得默认值。
此外cookie session也可以设置超时时间等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值