状态保持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 中用户名清除

posted @ 2019-07-16 17:31  太虚真人  阅读(2805)  评论(0编辑  收藏  举报