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的Flask框架实现视频的流媒体传输
Mar 31 Python
python安装以及IDE的配置教程
Apr 29 Python
Python的组合模式与责任链模式编程示例
Feb 02 Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 Python
Python3实现的字典遍历操作详解
Apr 18 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
从django的中间件直接返回请求的方法
May 30 Python
Python实现的特征提取操作示例
Dec 03 Python
你可能不知道的Python 技巧小结
Jan 29 Python
Python可视化工具如何实现动态图表
Oct 23 Python
pymongo insert_many 批量插入的实例
Dec 05 Python
Python实现Matplotlib,Seaborn动态数据图
May 06 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仿微信多图片预览上传实例代码
2016/09/13 PHP
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
Python 正则表达式操作指南
2009/05/04 Python
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
关于反爬虫的一些简单总结
2017/12/13 Python
python实现微信小程序自动回复
2018/09/10 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
python实现列表中最大最小值输出的示例
2019/07/09 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
Django中的session用法详解
2020/03/09 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
工业自动化毕业生自荐信范文
2014/01/04 职场文书
简单租房协议书范本
2014/08/20 职场文书
工程合作意向书范本
2015/05/09 职场文书
学校证明范文
2015/06/24 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书
python读取mnist数据集方法案例详解
2021/09/04 Python
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript
Win11软件图标固定到任务栏
2022/04/19 数码科技