共计 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, )
正文完
星哥玩云-微信公众号