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

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

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

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>
                {#图片验证码结束#}

图片URL开始

 # 获取图片验证码开始
        re_path('get_validcode_img/',login.get_validcode_img,name="get_validcode_img"),
            # 获取图片验证码结束
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值