一. ajax 登录 认证 验证码

https://download.csdn.net/download/baobao267/10722491 Django之Form表单验证及Ajax验证方式汇总
https://download.csdn.net/download/baobao267/10722491 Django之Form表单验证及Ajax验证方式汇总
https://blog.csdn.net/HFZeng/article/details/98654307
https://blog.csdn.net/kkorkk/article/details/80150644
https://www.jb51.net/article/165394.htm
https://segmentfault.com/q/1010000009345281
https://blog.csdn.net/huangql517/article/details/81259011

 templates

<!DOCTYPE html>
<html lang="en">
<head>{% load staticfiles %}<meta charset="UTF-8"><title>login</title><link rel="stylesheet" type="text/css" href="{%static 'css/bootstrap.min.css'%}"><script type="text/javascript" src="{%static 'js/jq.js'%}"></script></head>
<body>
<h3 style="text-align: center">登录页面</h3><div class="container"><div class="row"><div class="col-md-8 col-md-offset-2"><form method="post"  action=" ">{% csrf_token %}<div class="form-group"><label for="user">用户:</label><input type="text" class="form-control"  name="user" id="user"></div><div class="form-group"><label for="pwd">密码:</label><input type="password" class="form-control" name="pwd"  id="pwd"></div><div class="form-group"><label for="#">验证:</label><div class="row"><div class="col-md-6"><input type="text" class="form-control"  name="code" id="code"></div><div class="col-md-6">
{#                            <img style="width:200px;height:37px; border-radius:3px;" src="{%static 'img/11.png'%}">#}<img style="width:160px;height:35px; border-radius:3px;" src="/get_img/" alt="图片" id="img"></div></div></div><button class="btn btn-success pull-right" id="login_btn">登录</button><span class="errs"></span></form></div></div></div>
<script>$("#login_btn").click(function () {var  user=$("#user").val();var  pwd=$("#pwd").val();var  code=$("#code").val();var  csl=$("[name='csrfmiddlewaretoken']").val();$.ajax({url:"/login/",type:"post",data:{"user":user,"pwd":pwd,"code":code,"csl":csl},success:function (arg) {console.log(arg,typeof(arg))if (arg.user){{#登录成功了#}location.href="www.baidu.com"}else {{#失败#}$(".errs").html(arg.msg_err).css("color","red")}}});
{#<input type="hidden" name="csrfmiddlewaretoken" value="Sr7qsq3Y854eUp0Ef6vq3d7sO0joJmH6IMbU10ZNIrTnVh2WQdd48Nby4uTlo8AH">#}
  });{#点击验证码刷新#}

$("#img").click(function () {this.src+="?"
});</script>
</body>
</html>

views

from django.shortcuts import render,HttpResponse
from django.http import JsonResponse
import random
from django.contrib import auth
def login(request):if request.method=="POST":     #  ===> request.is_ajax():user=request.POST.get("user")pwd = request.POST.get("pwd")code = request.POST.get("code")print(user,pwd,code,"111111111111")# AJAX请求返回字典response={"user":None,"msg_err":""}if code.upper()==request.session.get("keep_str").upper():user_obj=auth.authenticate(username=user,password=pwd)if user_obj:response["user"]=userelse:response["msg_err"] = "用户名或者密码错误!!!!"else:response["msg_err"]="验证码错误!!"return JsonResponse(response)else:return render(request, "01html/01login.html") 验证码
def get_img(request):# 方式一:读取指定图片  本地磁盘# with open("myapp/statics/img/11.png", "rb")as f1:#      data=f1.read()#  return HttpResponse(data)# 方式二:读取指定图片 基于pollow模块来创建验证码 生成图片 放在本地磁盘    from PIL import Image 在读取图片# from PIL import Image# def get_random_color():  # 获取图片随机颜色#          return (random.randint(0,255),random.randint(0,255),random.randint(0,255))# img_png=Image.new("RGB",(350,60),get_random_color())# f1=open("myapp/statics/img/aa.png","wb")# img_png.save(f1,"png")# with open("myapp/statics/img/aa.png", "rb")as f1:#     data=f1.read()# return HttpResponse(data)# 方式三 :生成图片放在内存中   放在内存上 使用内存模块  from  io import BinaryIOfrom PIL import Image,ImageDraw,ImageFontfrom  io import BytesIOdef get_random_color():  # 获取图片随机颜色return (random.randint(0,255),random.randint(0,255),random.randint(0,255))img_png = Image.new("RGB", (200,38),get_random_color())    # 相当于得到一个画板draw=ImageDraw.Draw(img_png)    #  相当于得到一个画笔font=ImageFont.truetype("myapp/statics/font/aaa.ttf",25)keep_str=""for i in range(6):random_num=str(random.randint(0,9))random_lowalf = chr(random.randint(97, 122))random_upperf = chr(random.randint(65,90))random_chr=random.choice([random_num,random_lowalf,random_upperf])draw.text((i*20+40,5), random_chr,get_random_color(),font=font)keep_str+=random_chr# 噪点燥线width=200height=38for i in range(6):x1=random.randint(0,width)x2 = random.randint(0, width)y1=random.randint(0,height)y2 = random.randint(0, height)draw.line((x1,y1,x2,y2),fill=get_random_color())for i in range(20):draw.point([random.randint(0,width),random.randint(0,height)],fill=get_random_color())x = random.randint(0, width)y= random.randint(0, height)draw.arc((x,y,x+4,y+4),0,90,fill=get_random_color())# 内存写与读f=BytesIO()img_png.save(f,"png")data=f.getvalue()print(keep_str,"1111111111111")# 将验证码存入各自的session中request.session["keep_str"]=keep_strreturn HttpResponse(data)

urlsfrom django.contrib import admin
from django.urls import path
from  home import index
from myapp import views
urlpatterns = [path('admin/', admin.site.urls),path('', index.index),path('login/', views.login),path('get_img/', views.get_img),]

 2. 随机验证码

def get_img(request):# 方式一:读取指定图片  本地磁盘# with open("myapp/statics/img/11.png", "rb")as f1:#      data=f1.read()#  return HttpResponse(data)# 方式二:读取指定图片 基于pollow模块来创建验证码 生成图片 放在本地磁盘    from PIL import Image 在读取图片# from PIL import Image# def get_random_color():  # 获取图片随机颜色#          return (random.randint(0,255),random.randint(0,255),random.randint(0,255))# img_png=Image.new("RGB",(350,60),get_random_color())# f1=open("myapp/statics/img/aa.png","wb")# img_png.save(f1,"png")# with open("myapp/statics/img/aa.png", "rb")as f1:#     data=f1.read()# return HttpResponse(data)# 方式三 :生成图片放在内存中   放在内存上 使用内存模块  from  io import BinaryIOfrom PIL import Image,ImageDraw,ImageFontfrom  io import BytesIOimport randomdef get_random_color():  # 获取图片随机颜色return (random.randint(0,255),random.randint(0,255),random.randint(0,255))img_png = Image.new("RGB", (200,38),get_random_color())    # 相当于得到一个画板draw=ImageDraw.Draw(img_png)    #  相当于得到一个画笔font=ImageFont.truetype("myapp/statics/font/aaa.ttf",25)keep_str=""for i in range(6):random_num=str(random.randint(0,9))random_lowalf = chr(random.randint(97, 122))random_upperf = chr(random.randint(65,90))random_chr=random.choice([random_num,random_lowalf,random_upperf])draw.text((i*20+40,5), random_chr,get_random_color(),font=font)keep_str+=random_chr# 噪点燥线width=200height=38for i in range(6):x1=random.randint(0,width)x2 = random.randint(0, width)y1=random.randint(0,height)y2 = random.randint(0, height)draw.line((x1,y1,x2,y2),fill=get_random_color())for i in range(20):draw.point([random.randint(0,width),random.randint(0,height)],fill=get_random_color())x = random.randint(0, width)y= random.randint(0, height)draw.arc((x,y,x+4,y+4),0,90,fill=get_random_color())# 内存写与读f=BytesIO()img_png.save(f,"png")data=f.getvalue()print(keep_str,"1111111111111")# 将验证码存入各自的session中request.session["keep_str"]=keep_strreturn HttpResponse(data)

转载于:https://www.cnblogs.com/lovershowtime/p/11482222.html

二十六 .ajax登录 认证 验证码(session)相关推荐

  1. C1认证学习二十六(基础选择器)

    C1认证学习二十六(基础选择器) 任务背景 CSS选择器是CSS规则的一部分,用来指定需要设置的样式的HTML元素,通过选择器可以实现CSS对HTML元素一对一或者一对多或者多对一的控制了啦. 任务目 ...

  2. Shell脚本学习-阶段二十六-Web服务与端口

    文章目录-Shell阶段二十六-端口与服务对照表 前言 端口与Web服务对照表 简介 前言 端口与Web服务对照表 2端口:管理实用程序 3端口:压缩进程 5端口:远程作业登录 7端口:回显 9端口: ...

  3. QT开发(六十六)——登录对话框的验证机制

    QT开发(六十六)--登录对话框的验证机制 一.验证码机制 为了避免被恶意程序***,程序通常要使用安全机制.验证码机制是提供产生随机验证码,由用户识别填写来判断用户有效性的安全机制. 验证码必须动态 ...

  4. JVM 学习笔记二十六、JVM监控及诊断工具-GUI篇

    二十六.JVM监控及诊断工具-GUI篇 1.工具概述 使用上一张命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但他们存在下列局限: (1)无法获取方法级别的分析数据,如方法间的调用关系 ...

  5. 电脑高手应用技巧荟萃(电脑知识二十六)

    电脑高手应用技巧荟萃(电脑知识二十六) 2010年12月07日 ★"锁定计算机"快捷方式 我想在桌面上创建一个"锁定计算机"的快捷方式,请问应该如何实现呢? 首 ...

  6. 2008R2Win7管理二十六ADRMS客户端使用及侦错

    2008R2Win7管理二十六ADRMS客户端使用及侦错 预计我以后都没太多时间专研新技术和写文啦,尽量挤时间吧,有一篇放一篇吧,呵呵 本篇介绍在win7客户端使用adrms来进行权限管理和侦错,在使 ...

  7. 【Vue2.0】—vue-router(二十六)

    [Vue2.0]-vue-router(二十六) 一.vue-router 的理解 它是vue 的一个插件库,专门用来实现 SPA 应用 二.对 SPA 应用的理 单页 Web 应用(single p ...

  8. (转)tensorflow入门教程(二十六)人脸识别(上)

    https://blog.csdn.net/rookie_wei/article/details/81676177 1.概述 查看全文 http://www.taodudu.cc/news/show- ...

  9. 2021年大数据Hadoop(二十六):YARN三大组件介绍

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 Yarn三大组件介绍 ResourceManager No ...

最新文章

  1. Cocos 发射和监听事件 事件派送(TypeScript)
  2. ASP.NET管理状态的十种途径
  3. 将maven项目托管到github
  4. 大数据笔记-0907
  5. mysql映射mapper_Mybatis中Mapper映射文件使用详解
  6. 19 Signals and Signal Handling
  7. Java 8 终于支持 Docker !
  8. 如何向枚举中添加新值
  9. [noip2014]解方程 hash+秦九昭
  10. Nodejs修改镜像以及缓存路径
  11. element ui中table合并相同内容单元格
  12. python 图像快速替换某种颜色
  13. HCIP第九天笔记(OSPF的路由回馈、路由策略、以及配置指南)
  14. Windows 远程桌面连接方法及远程桌面控制软件推荐
  15. Fiddler配合夜神模拟器进行抓包
  16. 2017-百度-安全岗笔试
  17. Unity3D 200个插件免费分享
  18. eclipse左侧字体大小设置
  19. 浙大第四版概率论第一章思维导图
  20. PAT 1085 PAT单位排行 (Microsoft_zzt)

热门文章

  1. java populate_BeanUtils.populate()的用法
  2. Google Earth Engine(GEE)——MODIS 影像LST地表温度随时间变化的趋势案例分析
  3. Local declaration of '' hides instance variable
  4. 仿最新BiliBili客户端(已开源)
  5. Ubuntu 14.04安装bugzilla
  6. SAP中货物移动库位权限管理测试
  7. 2021年机修钳工(中级)考试内容及机修钳工(中级)考试总结
  8. Markdown由浅入深
  9. python永久配置pip下载镜像源方法(window版本)
  10. ios vs android设计