阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

三方平台应用-验证码

259次阅读
没有评论

共计 2099 个字符,预计需要花费 6 分钟才能阅读完成。

一、图片验证码

  • 概述

    图片验证码是验证码的一种,图片验证码常见的形式有输入图片中字母、数字等

  • 作用

    图片验证码是嵌入在企业网站、APP 等应用中使用的一种验证方式,用户需要识别图片并按要求执行操作,在验证成功后才能使用某项功能。比如客户在某应用中发布文章或评论时,必须先完成图片验证,才可以进行发布操作。一般用于最多为注册功能

  • 模块安装

    pip install pillow

  • 实现

    def verifycode(request):
    # 引入绘图模块
    from PIL import Image, ImageDraw, ImageFont
    # 引入随机函数模块
    import random
    # 定义变量,用于画面的背景色、宽、高
    bgcolor = (random.randrange(20, 100), random.randrange(20, 100), random.randrange(20, 100))
    width = 100
    height = 50
    # 创建画面对象
    im = Image.new('RGB', (width, height), bgcolor)
    # 创建画笔对象
    draw = ImageDraw.Draw(im)
    # 调用画笔的 point() 函数绘制噪点
    for i in range(0, 100):
    xy = (random.randrange(0, width), random.randrange(0, height))
    fill = (random.randrange(0, 255), 255, random.randrange(0, 255))
    draw.point(xy, fill=fill)
    # 定义验证码的备选值
    str = '1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'
    # 随机选取 4 个值作为验证码
    rand_str = ''
    for i in range(0, 4):
    rand_str += str[random.randrange(0, len(str))]
    # 构造字体对象
    font = ImageFont.truetype(r'/home/xlg/PycharmProjects/fonts/ADOBEARABIC-BOLDITALIC.OTF', 40)
    # 构造字体颜色
    fontcolor1 = (255, random.randrangea(0, 255), random.randrange(0, 255))
    fontcolor2 = (255, random.randrange(0, 255), random.randrange(0, 255))
    fontcolor3 = (255, random.randrange(0, 255), random.randrange(0, 255))
    fontcolor4 = (255, random.randrange(0, 255), random.randrange(0, 255))
    # 绘制 4 个字
    draw.text((5, 2), rand_str[0], font=font, fill=fontcolor1)
    draw.text((25, 2), rand_str[1], font=font, fill=fontcolor2)
    draw.text((50, 2), rand_str[2], font=font, fill=fontcolor3)
    draw.text((75, 2), rand_str[3], font=font, fill=fontcolor4)
    # 释放画笔
    del draw
    # 存入 session,用于做进一步验证
    request.session['verify'] = rand_str
    # 内存文件操作
    import io
    buf = io.BytesIO()
    # 将图片保存在内存中,文件类型为 png
    im.save(buf, 'png')
    # 将内存中的图片数据返回给客户端,MIME 类型为图片 png
    return HttpResponse(buf.getvalue(), 'image/png')

    验证码使用

    url(r'^getcode/$',main.verifycode,name='verifycode'),
    <img src="/getcode/" onclick="this.src='https://www.zutuanxue.com/getcode/?id='+Math.random()">

二、邮箱验证码

  • 配置 settings

    settings.py

    EMAIL_HOST = os.environ.get('MAIL_SERVER','smtp.163.com')
    EMAIL_HOST_USER = os.environ.get('MAIL_USER','15611833906@163.com')
    EMAIL_HOST_PASSWORD = os.environ.get('MAIL_PASSWORD',123456)
  • 单人邮件

    from django.core.mail import send_mail
    send_mail('Subject here',
    'Here is the message.',
    'from@example.com',
    ['to@example.com'],
    fail_silently=False,
    )

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-05-26发表,共计2099字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中