Django中session 的使用与理解

Django中session 的使用与理解(例题)

session概念可以查看我的博客[cookie与session的理解与区别]:
https://blog.csdn.net/Lq_520/article/details/81335876
假如以下登录视图:

def user_login(request):
    if request.method == 'GET':
        return render(request,'login.html')
    if request.method == 'POST':
        name = request.POST.get('username')
        password = request.POST.get('password')

        if Users.objects.filter(user_name=name).exists():
            user = Users.objects.get(user_name=name)
            if check_password(password, user.password):
                request.session['user_id'] = user.user_id
                return HttpResponseRedirect(reverse('loan:index'))
            else:
                return render(request, 'login.html', {'password': '用户密码错误'})
        else:
            return render(request, 'login.html', {'name': '用户不存在'})

设置session

 request.session['user_id'] = user.user_id

user_id 为你想设置session的名称,user为用户登录后的对象,user.user_id为用户为user_id的字段,整个意思就是将用户为user_id 的字段用sessionid来存储。

浏览器中输入用户名与密码进行登录 ,并提到转到index页面,点击鼠标右键,点击检查,会弹跳出页面,点击页面中network,刷新页面,点击Cookies,

出现如下界面:

这里写图片描述

可以看到Request Cookies中有sessionid的字段 ,这就是session的存储位置,而在数据库中,当用户登录后,django_session 表中如下界面:
这里写图片描述

表中的session_key 与浏览器中的sessionid的value值对应,这就是session建立的整个过程。

session_data就是前面存储的user.user_id字段

获取sessionid

request.session.get('user_id')
或者request.session['user_id']

user_id 为我前面给session设置的一个名称。

删除sessionid

del request.session['user_id']

这样我们就可以在浏览器中成功的建立,获取,删除session了。

猜你喜欢

转载自blog.csdn.net/Lq_520/article/details/81385549
今日推荐