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

三方平台应用-验证码

116次阅读
没有评论

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