Python生成验证码实例
更新时间:2014年08月21日 11:53:46 投稿:shichen2014
这篇文章主要介绍了Python生成验证码的方法,具有很好的实用价值,代码结构清晰易懂,需要的朋友可以参考下
本文实例展示了Python生成验证码的方法,具有很好的实用价值。分享给大家供大家参考。具体实现方法如下:
前台页面代码如下:
<div>
<img id="authcode_img" alt="验证码" src="/registration/makeimage/{{time}}"/>
<!-- time 任意随机数(时间戳),防止页面缓存 导致验证码不能更新-->
<a href="javascript:refreshCode();" rel="external nofollow" style="color:blue;">看不清换一张</a>
</div>
<script>
function refreshCode() {
$('authcode_img').src = "/registration/makeimage/" + Math.random();
}
</script>
后台程序如下:
import StringIO
import Image, ImageDraw, ImageFont, random #相应的模块需要安装
from xxx.settings import authcode_font #请确保改字体存在
def make_image(request):
mp = hashlib.md5()
mp.update(str(datetime.datetime.now())+str(random.random()))
mp_src = mp.hexdigest()
rand_str = mp_src[0:6]
font = ImageFont.truetype(authcode_font, 25)
width = 75
height = 30
im = Image.new('RGB',(width,height),'#%s'%mp_src[-7:-1])
draw = ImageDraw.Draw(im)
draw.line((random.randint(0,width),random.randint(0,height),random.randint(0,width),random.randint(0,height)))
draw.line((random.randint(0,width),random.randint(0,height),random.randint(0,width),random.randint(0,height)))
draw.line((random.randint(0,width),random.randint(0,height),random.randint(0,width),random.randint(0,height)))
draw.line((random.randint(0,width),random.randint(0,height),random.randint(0,width),random.randint(0,height)))
draw.line((random.randint(0,width),random.randint(0,height),random.randint(0,width),random.randint(0,height)))
draw.text((5,2), rand_str, font=font)
del draw
buffer = StringIO.StringIO()
im.save(buffer,'jpeg')
httpResponse = HttpResponse(content=buffer.getvalue(),mimetype="image/jpeg")
request.session['auth_code'] = rand_str
return httpResponse
程序效果如下:

相关文章
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
这篇文章主要介绍了Python3.5 Json与pickle实现数据序列化与反序列化操作,结合实例形式分析了Python3.5使用Json与pickle模块实现json格式数据的序列化及反序列化操作相关步骤与注意事项,需要的朋友可以参考下2019-04-04
python+pytest自动化测试函数测试类测试方法的封装
这篇文章主要介绍了python+pytest自动化测试函数测试类测试方法的封装,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下2022-06-06


最新评论