当前位置:   article > 正文

Django图片验证码源代码_django生成图片验证码代码

django生成图片验证码代码

验证码源代码 validcode_img.py:

import random    #导入随机模块

def get_random_color():
    # 获取随机的颜色  RGB
    return (random.randint(0,255),random.randint(0,255),random.randint(0,255))


def get_validcode_img(request):
    from PIL import Image,ImageDraw,ImageFont
    from io import BytesIO
    import random
        # 获取图片颜色,定义图片的宽270,高40,颜色调用随机颜色的函数
    img = Image.new("RGB",(350,40),color=get_random_color())
    # 画出来
    draw = ImageDraw.Draw(img)
    # 添加字体
    kumo_font = ImageFont.truetype("static/front/font/kumo.ttf", size=32)  # 字体  字体大小



    # 定义随机验证码
    validcode_str = ""
    for i in range(5):
        random_num = str(random.randint(0,9))    #随机数字【1-9】
        random_low_alpha = chr(random.randint(95,122))  #随机小写字母【a-z】
        random_upper_alpha = chr(random.randint(65,90)) #随机大写字母【A-Z】
        # 在这三个序列里随机选择5次,成立验证码
        random_char = random.choice([random_num,random_low_alpha,random_upper_alpha])
        # 生成图片验证码    设置每一次循环的验证码出现的间距(i*50+20,5)这里的5指的是:随机生成5个验证码。
        draw.text((i*60+50,5),random_char,get_random_color(),font=kumo_font)

        validcode_str += random_char    #把生成的random_char 加入自定义的validcode_str

    width = 270
    height = 40
    # 设置随机颜色的线段
    for i in range(20):
        # 定义随机的x轴
        x = random.randint(0,width)
        # 定义随机的y轴
        y = random.randint(0,height)
        draw.arc((x,y,x+4,y+4),0,90,fill=get_random_color())
    print("validcode_str",validcode_str)
    # 把生成的图片验证码存入session
    request.session['validcode_str'] = validcode_str


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

    return data
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

基于PIL模块动态生成响应状态码图片:

def get_validcode_img(request):
    img_data = validcode_img.get_validcode_img(request)
    return HttpResponse(img_data)
# 图片验证码结束
  • 1
  • 2
  • 3
  • 4

HTML中页面:

 {#图片验证码开始#}
                <div>

                    <img alt="" width="270" height="36" id="valid_code_img" src="{% url 'blog:get_validcode_img' %}" onclick="this.src='/blog/get_validcode_img/?'+Math.random()">
                </div>
                <div>
                    验证码:<input type="text" name="validcode" value="">
                </div>
                {#图片验证码结束#}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

图片URL开始

 # 获取图片验证码开始
        re_path('get_validcode_img/',login.get_validcode_img,name="get_validcode_img"),
            # 获取图片验证码结束
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/880978
推荐阅读
相关标签
  

闽ICP备14008679号