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程序
Apr 04 Python
python模拟登陆阿里妈妈生成商品推广链接
Apr 03 Python
Python计算三维矢量幅度的方法
Jun 15 Python
详解Python中的相对导入和绝对导入
Jan 06 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
scrapy爬虫完整实例
Jan 25 Python
Anaconda2 5.2.0安装使用图文教程
Sep 19 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 Python
Python实现AI换脸功能
Apr 10 Python
Python中SQLite如何使用
May 27 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 Python
Python绘制词云图之可视化神器pyecharts的方法
Feb 23 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
使用迭代器 遍历文件信息的详解
2013/06/08 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
Javascript学习笔记2 函数
2010/01/11 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
jquery实现倒计时效果
2015/12/14 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
vuex的简单使用教程
2018/02/02 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
Webpack中publicPath路径问题详解
2018/05/03 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
谈谈JavaScript中的垃圾回收机制
2020/09/17 Javascript
Python按行读取文件的简单实现方法
2016/06/22 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
Python中logging实例讲解
2019/01/17 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
利用python进行文件操作
2020/12/04 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
纪检干部现实表现材料
2014/08/21 职场文书
教师节标语大全
2014/10/07 职场文书
2014年学生会部门工作总结
2014/11/07 职场文书
员工离职证明范本
2015/06/12 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python