django中的图片验证码功能


Posted in Python onSeptember 18, 2019

python的验证码库(captcha)

将验证码做成这样:

django中的图片验证码功能

是不是和各大网页的图片源地址是一样,话不多说,让我们看代码:

我是用django和python中的captcha库做成 的

创建一个captcha_image.py:    

from captcha.image import ImageCaptcha
import random
class Captcha_Get():
  def __init__(self,
         CHAR_SET = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
         CAPTCHA_LEN = 4):
    self.CHAR_SET = CHAR_SET
    self.CAPTCHA_LEN = CAPTCHA_LEN
  def get_captcha(self):
    captcha_list = []
    for i in range(self.CAPTCHA_LEN):
      random_choice = random.choice(self.CHAR_SET)
      captcha_list.append(random_choice)
    return captcha_list
  def get_captcha_image(self):
    image = ImageCaptcha()
    captcha_list = self.get_captcha()#返回一个列表
    captcha_str = ''.join(captcha_list)#将列表的所有内容整合成一个字符串
    captcha_image = image.generate(captcha_str)
    #captcha_image返回<_io.BytesIO object at 0x000001C8758C8728>,它是一个<class '_io.BytesIO'>
    return captcha_str,captcha_image#因为要和django登陆相结合所以验证码的内容也要返回

然后,创建django项目

python-admin startproject mysite

创建app

python manage.py startapp app

在setting文件下注册app,写好urls,将captcha_image文件放入app目录下

views.py:

from django.http import JsonResponse,HttpResponse
from .captcha_image import *
def auth_code_port(request):
  """
  生成验证码的接口
  :param request:
  :return: 图片的对象
  """
  captcha_str, image_64 = Captcha_Get().get_captcha_image()
  #request.session['captcha_str'] = captcha_str #将验证码内容放入session以便于后边判断,但必须迁移数据库,否则报错
  #image = 'data:image/png;base64,'+image_64
  resp = HttpResponse(image_64, content_type='image/png')
  return resp

让我测试一下验证码接口是否正确:运行django项目,然后在网页上输入127.0.0.1:8000/app/auth_code_port

django中的图片验证码功能

这样就好了,在前端模板中就可以直接调用接口。

总结

以上所述是小编给大家介绍的django中的图片验证码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Flask框架URL管理操作示例【基于@app.route】
Jul 23 Python
Python常见排序操作示例【字典、列表、指定元素等】
Aug 15 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
Jul 19 Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 Python
Python Django框架模板渲染功能示例
Nov 08 Python
在 Python 中接管键盘中断信号的实现方法
Feb 04 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
python实现控制台输出彩色字体
Apr 05 Python
Python如何将字符串转换为日期
Jul 31 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 Python
python playwright 自动等待和断言详解
Nov 27 Python
python tkinter图形界面代码统计工具
Sep 18 #Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 #Python
Python 元组操作总结
Sep 18 #Python
python sorted函数的小练习及解答
Sep 18 #Python
python 默认参数相关知识详解
Sep 18 #Python
python连接PostgreSQL数据库的过程详解
Sep 18 #Python
Python传递参数的多种方式(小结)
Sep 18 #Python
You might like
PHP开发入门教程之面向对象
2006/12/05 PHP
zend framework框架中url大小写问题解决方法
2014/08/19 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
详解php的socket通信
2015/08/11 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
php fread读取文件注意事项
2016/09/24 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
javascript 进度条 实现代码
2009/07/30 Javascript
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
JS实现的找零张数最小问题示例
2017/11/28 Javascript
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
Webpack3+React16代码分割的实现
2021/03/03 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
Python科学计算之NumPy入门教程
2017/01/15 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
python——全排列数的生成方式
2020/02/26 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
学校2014重阳节活动策划方案
2014/09/16 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL