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了。