状态保持login()和状态清除logout()
如果需求是注册成功后即表示用户认证通过,那么此时可以在注册成功后实现状态保持
- 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 logout
class LogoutView(View):
"""退出登录"""
def get(self, request):
"""实现退出登录逻辑"""
# 清理 session
logout(request)
# 退出登录,重定向到登录页
response = redirect(reverse('contents:index'))
# 退出登录时清除 cookie 中的 username
response.delete_cookie('username')
# 返回响应
return response
由于首页中用户名是从 cookie 中读取的。所以退出登录时,需要将 cookie 中用户名清除