如果需求是注册成功后即表示用户认证通过,那么此时可以在注册成功后实现状态保持
login( ) 方法介绍:
状态保持:
将通过认证的用户的唯一标识信息(比如:用户ID)写入到当前 session 会话中login( ) 方法:
Django 用户认证系统提供了 login() 方法
封装了写入 session 的操作,帮助我们快速实现状态保持login( ) 位置:
django.contrib.auth.__init__.py 文件中
login(request, user, backend=None)
login( ) 方法使用
#保存注册数据try: user = User.objects.create_user(username=username, password=password, mobile=mobile)except DatabaseError: return render(request, 'register.html', {'register_errmsg': '注册失败'})#实现状态保持login(request, user)#响应注册结果return redirect(reverse('contents:index'))
查看状态保持结果
logout()清除session,实现退出登录
logout( ) 位置
django.contrib.auth.__init__.py
文件中- logout( ) 方法使用
# 导入: from django.contrib.auth import logoutclass LogoutView(View): """退出登录""" def get(self, request): """实现退出登录逻辑""" # 清理 session logout(request) # 退出登录,重定向到登录页 response = redirect(reverse('contents:index')) # 退出登录时清除 cookie 中的 username response.delete_cookie('username') # 返回响应 return response
由于首页中用户名是从 cookie 中读取的。所以退出登录时,需要将 cookie 中用户名清除