dj鲜生-26-登陆时-记住用户名的操作

本文详细介绍了使用Django框架实现用户登录的过程,包括GET和POST请求处理、视图类编写、用户验证及登录逻辑,并讲解了如何利用Cookie保存用户名以实现记住我功能。

login页给复选框加上name

在这里插入图片描述

流程图

post请求
在这里插入图片描述

get请求

在这里插入图片描述

视图类代码


# /user/login
class LoginView(View):
    def get(self, request):
        print('get method')
        print('cookie...',  request.COOKIES)
        print('cookie中的remember值', request.COOKIES.get("remember"))

        # 获取用户名
        if "username" in request.COOKIES:
            # {"username":"pyhui"}
            username = request.COOKIES.get("username")
            username = username
            checked = "checked"
        else:
            # {}
            print('cookie里没有存入username')
            username = ""
            checked = ""
        # 渲染页面
        return render(request, "login.html",
                      {"username":username, "checked": checked})

    def post(self, request):
        # 用户登陆
        print('post method')
        print('获取cookie', request.COOKIES)
        print('cookie中的remember值', request.POST.get("remember"))

        # 1,接收数据
        username = request.POST.get("username")
        password = request.POST.get("password")
        print(username)
        print(password)
        # 2,校验数据
        from django.contrib.auth import authenticate
        user = authenticate(username=username, password=password)
        # 如果用户验证成功
        if user is not None:
            print('user, is active', user, user.is_active)
            # 如果用户已激活
            if user.is_active:
                # 3,登陆逻辑
                print('登陆用户')
                from django.contrib.auth import login
                login(request, user)
                print('页面跳转')

                response = redirect(reverse("goods:index"))
                remember = request.POST.get("remember")
                if remember == 'on':
                    # 响应对象.set_cookie(键,值,过期时间)
                    response.set_cookie("username", username, max_age=7*24*3600)
                else:
                    response.delete_cookie("username")

                return response
            # 用户未激活
            else:
                # 用户未激活,给他一个链接,让用户点击这个链接就可以发送一个激活邮件
                html = "<a href='/user/resend_active_mail/{}/'>重新发送激活码</a>".format(user.id)
                return render(request, "login.html", {"errmsg": html})
        # 如果用户验证不成功
        else:
            return render(request, "login.html", {"errmsg": "用户名或者密码错误"})


模板页面的布置

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸鱼编程pyhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值