美文网首页
用户登录(view写法)

用户登录(view写法)

作者: 两点半的杂货铺 | 来源:发表于2018-03-11 16:16 被阅读3次

    一、验证码

    准备工作分别需要两个文集一个是check_code.py文件,一个是Monaco.ttf字体文件
    验证码的思路,利用htmlsrc属性直接可以读取对应的连接展示在页面上,所以单独把验证码写成一个连接请求用来返回

    • 引入BytesIO 将验证码图片保存在内存环境,这样就不需要实体化的目录文件
    • request.session['CheckCode'] = code 将验证码对应的键值对保存在session中
    from io import BytesIO
    #验证码
    def check_code(request):
        stream = BytesIO()
        img,code = create_validate_code()
        img.save(stream,'PNG')
        request.session['CheckCode'] = code
        return HttpResponse(stream.getvalue())
    

    二 、思路

    • 页面get请求的时候我们将formfanh
    • post 请求时先设置好ajax 钥匙
    • login_obj.is_valid() 用来判断是否符合我们设置
    • 如果符合我们给我们的钥匙重新赋值
    • 如果不符合,我们先判断在错误信息中是否存在check_code,也就是验证码的错误信息这个和form字段一一对应,有就是验证码错误,没有就是密码错误
    def Login(request):
        if request.method == "GET":
            login_obj = account.loginform(request)
            return render(request,"login.html",{'login_obj':login_obj})
        elif request.method == "POST":
            ret = {'status':False,'message':None}
            login_obj = account.loginform(request,request.POST)
            if  login_obj.is_valid():
                ret['status'] = True
            else:
                #判断错误信息
                if "check_code" in login_obj.errors:
                    ret['message'] = '验证码错误'
                else:
                    ret['message'] = '用户名密码错误'
            return  HttpResponse(json.dumps(ret))
    

    相关文章

      网友评论

          本文标题:用户登录(view写法)

          本文链接:https://www.haomeiwen.com/subject/euuyfftx.html