1. 前端页面(引入jquery与bootstrap.css)

<div class="container"><div class="row"><div class="col-md-8 col-md-offset-2"><form action="" method="post">{% csrf_token %}<div class="form-group"><lable for="">用户名</lable><input type="text" class="form-control" id="user"></div><div class="form-group"><lable for="">密码</lable><input type="password" class="form-control" id="password"></div><div class="form-group"><lable for="">验证码</lable><div class="row"><div class="col-md-6"><input type="text" class="form-control" id="validcode"></div><div class="col-md-6"><img src="/valid_Image/" alt="" class="valid-img"></div><div class="col-md-3"><input type="button"  id="refresh"></div></div></div><input type="button" class="btn btn-primary" value="登录"><span class="error-info"></span></form></div></div>
</div>

<script>$(".btn-primary").click(function () {$.ajax({url:'',type:'post',data:{user:$('#user').val(),password:$('#password').val(),validcode:$('#validcode').val(),csrfmiddlewaretoken:$("[name='csrfmiddlewaretoken']").val(),},success:function (response) {//判断是否通过验证if (response.user){$('.error-info').html(response.user).css('color','black')}else{$('.error-info').html(response.error).css('color','red')}}})});//点击验证码图片异步刷新$(".valid-img").click(function () {{#src=$('.valid-img').prop('src')+"?";#}{#$('.valid-img').prop('src',src);#}this.src+='?';})
</script>

2. 后台python

from django.shortcuts import render,HttpResponse
from django.contrib import auth#登录视图函数
def login(request):#判断请求方式if request.is_ajax():#获得前端用户登陆数据user=request.POST.get('user')password=request.POST.get('password')validcode=request.POST.get('validcode')#创建响应数据字典response = {"user": None, "error": ""}#判断验证码是否一致if validcode.upper()==request.session.get('valid_text').upper():#验证码一直后判断用户名与密码是否正确,如正确返回用户对象user_obj=auth.authenticate(usename=user,password=password)if user_obj:response['user']=userelse:response['error']="用户名或者密码错误"#ajax请求返回一个jsonelse:response['user']='验证码错误'return JsonResponse(response)if  request.request.method=='GET':return render(request,'login.html')#生成验证码图片
def valid_Image(request):from PIL import Image,ImageDraw,ImageFontfrom io import BytesIOimport random#获得随机颜色def get_random_color():return(random.randint(0,255),random.randint(0,255),random.randint(0,255))#生成背景图片img=Image.new('RGB',(130,40),get_random_color())#使用画笔draw=ImageDraw.Draw(img)#设置验证码字体(字体文件与路径需自己设置)font=ImageFont.truetype('static/Hollywood Hills Italic.ttf',20)#创建存储验证码字符串的变量valid_text=''#生成验证码(包括数字与大小写字母)for i in range(5):random_Num=str(random.randint(0,9))random_Lowchar=chr(random.randint(97,122))random_Upchar = chr(random.randint(65, 90))random_text=random.choice([random_Num,random_Lowchar,random_Upchar])draw.text((i*20+10,5),random_text,get_random_color(),font)valid_text+=random_text#生成验证码图片内的干扰线与噪点width=130height=40for i in range(10):x1=random.randint(0,width)y1=random.randint(0,height)x2 = random.randint(0, width)y2 = random.randint(0, height)draw.line((x1,y1,x2,y2),fill=get_random_color())for i in range(120):x1=random.randint(0,width)y1=random.randint(0,height)draw.point((x1,y1),fill=get_random_color())#设置sessionrequest.session['valid_text']=valid_text#将生成的图片存在内存中f=BytesIO()img.save(f,'jpeg')data=f.getvalue()f.close()#返回验证码图片return HttpResponse(data)

转载于:https://www.cnblogs.com/wangdamao/p/11564355.html

python登录验证码(基于django框架)相关推荐

  1. python毕业设计作品基于django框架 校园二手书籍交易系统毕设成品(8)毕业设计论文模板

    python校园二手书籍交易 django校园二手书籍交易 python毕业设计作品成品 django毕业设计作品成品 整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文 ...

  2. python毕业设计作品基于django框架 校园二手书籍交易系统毕设成品(5)任务书

    python校园二手书籍交易 django校园二手书籍交易 python毕业设计作品成品 django毕业设计作品成品 整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文 ...

  3. python毕业设计作品基于django框架 教室实验室预约系统毕设成品(6)开题答辩PPT

    python教室实验室预约系统 django教室实验室预约系统 python毕业设计作品成品 django毕业设计作品成品 整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + ...

  4. python毕业设计作品基于django框架 教室实验室预约系统毕设成品(8)毕业设计论文模板

    python教室实验室预约系统 django教室实验室预约系统 python毕业设计作品成品 django毕业设计作品成品 整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + ...

  5. python毕业设计作品基于django框架 教室实验室预约系统毕设成品(5)任务书

    python教室实验室预约系统 django教室实验室预约系统 python毕业设计作品成品 django毕业设计作品成品 整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + ...

  6. python毕业设计作品基于django框架校园排课选课系统毕设成品(3)后台管理功能

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

  7. python毕业设计作品基于django框架 校园运动场地预约系统毕设成品(6)开题答辩PPT

    python运动场地预约系统 django运动场地预约系统 python毕业设计作品成品 django毕业设计作品成品 整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文 ...

  8. python毕业设计作品基于django框架 校园运动场地预约系统毕设成品(7)中期检查报告

    python运动场地预约系统 django运动场地预约系统 python毕业设计作品成品 django毕业设计作品成品 整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文 ...

  9. python毕业设计作品基于django框架校园排课选课系统毕设成品(7)中期检查报告

    整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + 论文模板 + 答辩PPT等 + 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍:框 ...

  10. python毕业设计作品基于django框架 教室图书馆座位预约系统毕设成品(4)开题报告

    python教室图书馆座位预约 django教室图书馆座位预约 python毕业设计作品成品 django毕业设计作品成品 整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + ...

最新文章

  1. PCB走线拐弯处锯齿显示与平滑显示
  2. Java开发人员在编程中常见的雷!
  3. RxSwift之深入解析map操作符的底层实现
  4. tdms打开闪退问题
  5. ubuntu mysql5.6_ubuntu安装mysql5.6
  6. 与敏捷团队一起交付价值
  7. 程序挂起时自动创建转储文件
  8. LabView2018的安装
  9. 拼多多这是得罪华为了?
  10. html文件 保持在,如何保持.phtml文件的简洁和整洁?
  11. react-cnode实践笔记
  12. java高级工程师认证考试_Java高级工程师必备知识
  13. 利用python自动解析摩斯电码音频文件
  14. python报告水印怎么弄_python 图片添加水印 pdf 添加水印
  15. 自定义指令,实现默认头像和用户上传头像的切换
  16. Axure8.0基础教程 一
  17. linux64x gtx970,Nvidia GeForce GTX 970 ( 4 GB / 七彩虹 )无法正常驱动
  18. java mysql插入数据乱码_java向mysql数据库插入数据显示乱码的问题
  19. 快速掌握 jQuery 操作 HTML 节点
  20. 九、网络协议和网络编程

热门文章

  1. 如果去掉UITableView上的section的headerView和footerView的悬浮效果
  2. OpenLdap 相关命令
  3. Javascript 中的 Function对象
  4. [已经完美解决]IE下 'document.getElementById(...)' is null
  5. 2021年结婚登记创36年新低,六大原因值得注意
  6. Fedora和Fedora Core各个历史版本官方下载地址
  7. 计算机视觉-计算机视觉开源库OpenCV基础
  8. 知乎大牛网友推荐几个靠谱老师及课程
  9. Python 学习 —— Numpy 、Pandas 傻傻分不清楚
  10. 华硕飞行堡垒开启虚拟化