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 相关文章推荐
python操作摄像头截图实现远程监控的例子
Mar 25 Python
python二维列表一维列表的互相转换实例
Jul 02 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
为什么你还不懂得怎么使用Python协程
May 13 Python
python下的opencv画矩形和文字注释的实现方法
Jul 09 Python
Python传递参数的多种方式(小结)
Sep 18 Python
Tensorflow: 从checkpoint文件中读取tensor方式
Feb 10 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
python获取栅格点和面值的实现
Mar 10 Python
详解python对象之间的交互
Sep 29 Python
python如何获得list或numpy数组中最大元素对应的索引
Nov 16 Python
python os.listdir()乱码解决方案
Jan 31 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
PHP 编写的 25个游戏脚本
2009/05/11 PHP
PHP学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
php is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
JS 控件事件小结
2012/10/31 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
2017/07/19 jQuery
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
使用JS来动态操作css的几种方法
2019/12/18 Javascript
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
Python编程中装饰器的使用示例解析
2016/06/20 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
土木工程应届生自荐信
2013/09/24 职场文书
社区综治工作汇报
2014/10/27 职场文书
闪闪的红星观后感
2015/06/08 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书