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程序与MySQL的教程
Apr 29 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
Jul 02 Python
Python中字符串的常见操作技巧总结
Jul 28 Python
python executemany的使用及注意事项
Mar 13 Python
Python机器学习之决策树算法实例详解
Dec 06 Python
查看django版本的方法分享
May 14 Python
Python日期时间对象转换为字符串的实例
Jun 22 Python
python opencv实现图像边缘检测
Apr 29 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
Jun 17 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
Aug 02 Python
浅谈Python3中print函数的换行
Aug 05 Python
Python装饰器的练习题
Nov 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
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
Vue中引入样式文件的方法
2017/08/18 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
js中null与空字符串&quot;&quot;的区别讲解
2019/01/17 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
python 实现对文件夹内的文件排序编号
2018/04/12 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
python定位xpath 节点位置的方法
2019/08/27 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
如何理解委托
2012/01/06 面试题
保送生自荐信范文
2013/10/06 职场文书
创意活动策划书
2014/01/15 职场文书
银行金融服务方案
2014/06/11 职场文书
好人好事新闻稿
2015/07/17 职场文书
酒店厨房管理制度
2015/08/06 职场文书
详解python的异常捕获
2022/03/03 Python
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python