使用django实现登录和注册功能的注意事项

在view的视图函数中 可以打印自省以下request 

print(dir(request))

 其中的方法有很多

例如request.method可以得出此次请求使用的方法是什么

分别对GET请求 以及 POST 请求分别返回不同的页面 进行不同的操作

def login(request):
    if request.method == "GET":
        # 如果是get请求返回登录的页面
        return render(request, 'login.html')
    elif request.method == "POST":
        username = requests.POST.get("un")
        # 如果是post请求 可以接收由网页传递过来的数据 比如用户名和密码
        # 其中post请求接收参数的方法是 request.POST.get() # get中内容是前端页面表单中name的值
        # Custom 是自定义用户类 上一个有说如何自定义用户类
        # 判断这个username是否在数据库中 如果存在则返回True 否则返回False
        user = Custom.objects.filter(username=username).first()
        if user:
            # 用户名存在 再获取密码
            password = request.POST.get("pwd")
            # 接下来再判断密码
            # Custom 继承的父类中有check_password这个方法 校验密码是否正确
            if user.check_password(raw_password=password):
                return HttpResponse('登录成功')
            else:
                error = "密码错误"
        else:
            error = "用户名不存在"
        # 如果用户名或者密码不对,则还是返回登录页面 将错误信息返回到页面中
        return render(request, 'login.html', {"error":error})
            

注册基本一致 

def register(request):
    if request.method == "GET":
        return render(request, 'register.html')
    elif request.method == "POST":
        username = request.POST.get('un')
        user = Custom.objects.filter(username=username).first()
        if user:
            error = '该用户名已经存在'
        else:
            password1 = request.POST.get('pwd')
            password2 = request.POST.get('pwd2')
            if password1 == password2:
                user = Custom.objects.create_user(username=username, password=password1)
                lgi(request, user)
                # 重定向 + 解除硬编码
                return redirect(to=reverse('news:index'))
            else:
                error = '两次密码输入不一致'
        return render(request, 'register.html', {"error":error})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值