1. 随机生成rgb 元组

def random_RGB(min, max):
return tuple([random.randint(min, max) for i in range(3)])
2.生成4位随机数
def random_fcode():
code = ''
for i in range(4):
tag = random.randint(1, 3) # 1:大写 2:小写 3:数字
if tag == 1:
code += chr(random.randint(65, 90))
elif tag == 2:
code += chr(random.randint(97, 122))
else:
code += str(random.randint(0, 9))
return code
3.利用画板生成验证码
# 创建画板
img = Image.new('RGB',(170,32),random_RGB(150,255)) # 图像模型,大小,颜色 # 在画板中写字
img_draw = ImageDraw.Draw(img) # img 画板 # 设置文字字体
img_font = ImageFont.truetype('static/font/kumo.ttf',size=32) # 下载的字体, 大小
# 获取验证码,并将验证码存储在session中,与会话绑定,便于登录时验证 img_code = random_fcode()
request.session['img_code'] = img_code # 正式画文字:xy轴,文本,颜色,字体
for i,ch in enumerate(img_code): # i为序号,ch为文本内容(验证码内容)
  img_draw.text((30+i*30,0),ch,random_RGB(0,150),img_font) bf = BytesIO() # 字节流
img.save(bf, 'png') # 存储方法, 画出来的图片的存储格式
data = bf.getvalue() # 从内存中取出数据 return HttpRessponse(data) 在登录界面 可设计成 点击图片进行验证码的刷新
ajax 为:
  
$('#codes').click(function () {

    url = '/login_code/';

    {#点击验证码进行更换#}
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onreadystatechange = function () {
if(xhr.readyState == 4){
if(xhr.status == 200){
var blod = this.response;
var src = URL.createObjectURL(blod);
$('#codes').attr('src',src);
}
}
};
xhr.send()
})

最新文章

  1. Scala - 隐式转换和隐式参数
  2. CodeForces 165E Compatible Numbers(位运算 + 好题)
  3. springMVC发送邮件
  4. 微信app支付,服务端对接
  5. portable runtime
  6. Linux下MySQL5.6的修改字符集编码为UTF8
  7. java 使用 comet4j 主动向客户端推送信息 简单例子
  8. 我30天在Stack Overflow问答网站上回答问题的感受
  9. 缓存算法–LRU
  10. 修改UISearchBar背景色
  11. Android SQLite之乐学成语项目数据库存储
  12. new对象数组时的内存布局
  13. 201521123109 《java程序设计》第13周学习总结
  14. k8s 创建资源的两种方式 - 每天5分钟玩转 Docker 容器技术(124)
  15. 使用sql语句比较excel中数据的不同
  16. Halcon中模板匹配方法的总结归纳
  17. NoHttp封装--03 cookie
  18. 利用MSF的MS08_067模块攻击windows server 2003 SP2中文版系统
  19. DrawPrimitivesTest
  20. CodeForces 604A(浮点数)

热门文章

  1. 优化IIS7.5支持10万个同时请求的配置方法
  2. HLS自习(1)
  3. 负载均衡中的session保持
  4. C++类的组合例子
  5. Python量化分析,计算KDJ
  6. Winform 实现跨线程以及Timer
  7. suList() 和 asList()
  8. SpringMVC Controller接收前台ajax的GET或POST请求返回各种参数
  9. Java笔记Spring(八)
  10. angular4中引入quill editor