用户登录(view写法)

一、验证码

准备工作分别需要两个文集一个是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))
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,137评论 19 139
  • error code(错误代码)=0是操作成功完成。error code(错误代码)=1是功能错误。error c...
    Heikki_阅读 8,741评论 1 9
  • 22年12月更新:个人网站关停,如果仍旧对旧教程有兴趣参考 Github 的markdown内容[https://...
    tangyefei阅读 35,310评论 22 257
  • 人生有好多路,只不过成功人把自己的路越走越宽,而EB的我把自己的路都堵死了。 你说你没朋友,那你有没有好好想想你自...
    冉忆阅读 8,692评论 1 2
  • 引子 这次我们讨论一个很小但是很有趣的问题。作为售前顾问,我们应该如何结束与用户的交流呢? 这里所说的结束交流,并...
    猫科的黄小优阅读 3,596评论 0 1

友情链接更多精彩内容