加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

验证码图片生成pillow

发布时间:2020-12-16 03:00:24 所属栏目:百科 来源:网络整理
导读:前端代码 div验证码框的样式 div class ="form-group" label for ="pwd" 验证码 / label div class ="row" div class ="col-md-6" input type ="text" class ="form-control" id ="valid_code" / div div class ="col-md-6" img width ="270" height ="36" i

前端代码

div验证码框的样式

<div class="form-group">
                    <label for="pwd">验证码</label>
                    <div class="row">
                        <div class="col-md-6">
                            <input type="text" class="form-control" id="valid_code">
                        </div>
                        <div class="col-md-6">
                            <img width="270" height="36" id="valid_code_img" src="/get_validCode_img/" alt="">   //自动加载验证码视图函数
                        </div>
                    </div>
                </div>

验证码点击刷新事件

<script>
    $("#valid_code_img").click(function () {
        {#console.log($(this)[0]);#}

        $(this)[0].src += "?"

    });
</script>

验证码生成函数

def create_img(request):
    img = Image.new(RGB,(270,40),color=color_yeild())  # pillow 库PIL 生成图片 color为函数生成
    draw = ImageDraw.Draw(img)
    kumo_font = ImageFont.truetype(static/font/kumo.ttf,size=32)  # 字体设置
    check_digit = ‘‘
    for i in range(5):
        random_num = str(random.randint(0,9))
        random_low_alpha = chr(random.randint(95,122))
        random_upper_alpha = chr(random.randint(65,90))
        random_char = random.choice([random_num,random_low_alpha,random_upper_alpha])
        draw.text((i*50+20,5),random_char,color_yeild(),kumo_font)
        check_digit += random_char
    # print(‘check_digit‘,check_digit)
    request.session["check"] = check_digit   #生成随机5位验证码并存入session中




    f = BytesIO()
    img.save(f,png)
    data = f.getvalue()


    # with open(‘wudi.png‘,‘wb‘) as f:
    #     img.save(f,‘png‘)
    # f = open(‘wudi.png‘,‘rb‘)
    # import json
    # data = json.dumps(img)
    return HttpResponse(data)
def color_yeild():  #生成随机的颜色(255,255,255)
    result = (random.randint(0,255),random.randint(0,255))
    return result

登录的时候校验验证码(d代码只有片段),通过ajax请求传入request的

valid_code = request.POST.get(valid_code,None)
print(valid_code,valid_code)
# print(‘request‘,request)
check_true = request.session.get("check")
print("check_true",check_true)
if valid_code.upper() == check_true.upper():   # 去除大小写
    print(1)
    user = auth.authenticate(username=user,password=pwd)   # 自动去djangouser表中校验
    if user:
       auth.login(request,user)  # 相当于设置session 设置session的值user 设置完成后request.user就是全局的变量了直接可以随意随时随地的使用request.user进行取值
       response[user] = user.username
    else:
        response[msg]=密码输入错误
else:
    response[msg]=验证码错误
return JsonResponse(response)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读