zoukankan      html  css  js  c++  java
  • django--验证码功能实现

    首先建立验证码的视图函数
    1需要安装pillow库

    #导入绘图库
    from PIL import ImageDraw
    #导入绘图字体库
    from PIL import ImageFont
    #导入图片库
    from PIL import Image
    #导入io库
    import io
    #导入随机库
    import random

    1,定义验证码图片

    #定义随机颜色方法
    def get_random_color():
        
        R = random.randrange(255)
        G = random.randrange(255)
        B = random.randrange(255)
    
        return (R,G,B)
    
    #定义随机验证码
    def test_captcha(request):
        #定义背景颜色
        bg_color = get_random_color()
        #定义画布大小 宽,高
        img_size = (150,80)
        #定义画笔 颜色种类,画布,背景颜色
        image = Image.new("RGB",img_size,bg_color)
        #定义画笔对象 图片对象,颜色类型
        draw = ImageDraw.Draw(image,'RGB')
        #定义随机字符
        source = '0123456789asdfghjkl'
        #定义四个字符
        #定义好容器,用来接收随机字符串
        code_str = ''
        for i in range(4):
            #获取随机颜色 字体颜色
            text_color = get_random_color()
            #获取随机字符串
            tmp_num = random.randrange(len(source))
            #获取字符集
            random_str = source[tmp_num]
            #将随机生成的字符串添加到容器中
            code_str += random_str
            #将字符画到画布上 坐标,字符串,字符串颜色,字体
            #导入系统真实字体,字号
            my_font = ImageFont.truetype("c:\windows\Fonts\arial.ttf",20)
            draw.text((10+30*i,20),random_str,text_color,font=my_font)
        #使用io获取一个缓存区
        buf = io.BytesIO()
        #将图片保存到缓存区
        image.save(buf,'png')
    
        #将随机码存储到session中
        request.session['code'] = code_str
    
        #第二个参数声明头部信息
        return HttpResponse(buf.getvalue(),'image/png')

    2前端定义验证码图片和输入输入验证码

    {# 利用clcik时间来刷新验证码 #}{# 通过样式来改变悬停时的图标 #}
            <img style="cursor:pointer;" src="/captcha" onclick='this.src=this.src+"?"+Math.random()'  />  
            <input name='code' type="text" />

    3.定义验证码路由,并在登录时根据前端name 获取用户输入的验证码与存入session的验证码比对实现其功能

  • 相关阅读:
    《人月神话》读后感-何保委
    软件工程2017第二次作业随笔-何保委
    软件工程2017第一次作业随笔
    实验吧 REVERSE
    浙大ctf REVERSE
    eclipse安装
    表单
    【南京邮电】maze 迷宫解法
    看雪.TSRC 2017CTF秋季赛第三题
    使用Z3破解简单的XOR加密
  • 原文地址:https://www.cnblogs.com/xcsg/p/10455785.html
Copyright © 2011-2022 走看看