Django之生成验证码

def getvcode(request):

    position=string.ascii_letters+string.digits
    vcode=''.join(random.sample(position,4))

    # 保存验证码
    request.session['vcode']=vcode
    # 生成画布
    image=Image.new('RGB',(150,50),color=getrandomcolor())
    # 创建画笔
    draw=ImageDraw.Draw(image)
    # 生成验证码
    path=os.path.join(BASE_DIR,'static','fonts','ADOBEARABIC-BOLD.OTF')
    font=ImageFont.truetype(font=path,size=50)
    for i in range(len(vcode)):
     draw.text((15+30*i,2),vcode[i],fill=getrandomcolor(),font=font)
    # 生成噪声(500个不同颜色的点):
    for i in range(500):
        positions = (random.randint(0, 150), random.randint(0, 50))
        draw.point(positions,fill=getrandomcolor())
    # 创建字节容器
    buffer=io.BytesIO()
    # 将画布丢入容器
    image.save(buffer,'png')

    return HttpResponse(buffer.getvalue(),'image/png')

def getrandomcolor():
    red=random.randint(0,255)
    green = random.randint(0, 255)
    black = random.randint(0, 255)
    return (red,green,black)

在前端点击验证码切换:

<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $('#image').click(function () {
                $(this).attr('src',"/app/getvcode"+Math.random())
            })
        })
    </script>


<body>
<form method="post" action="{% url 'app:registe' %}" enctype="multipart/form-data">
    {% csrf_token %}
    用户名:
    <input type="text" placeholder="enter uname" name="uname"><br>
    密码:
    <input type="password" placeholder="enter password" name="upwd"><br>
    再次输入密码:
    <input type="password" placeholder="enter password" name="upwd2"><br>
    <img id='image' src="/app/getvcode"><br>
    验证码:
    <input type="text" placeholder="enter vcode" name="vcode"><br>
    <input type="file" name="uicon"><br>
    <input type="submit" value="注册">
</form>

</body>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值