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实现颜色空间转换程序(Tkinter)
Dec 31 Python
Python减少循环层次和缩进的技巧分析
Mar 15 Python
Python自定义主从分布式架构实例分析
Sep 19 Python
Python使用PIL模块生成随机验证码
Nov 21 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
Python之list对应元素求和的方法
Jun 28 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
python3实现猜数字游戏
Dec 07 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
Nov 22 Python
Python列表的深复制和浅复制示例详解
Feb 12 Python
Elasticsearch 基本查询和组合查询
Apr 19 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 学习提高路线分享
2011/10/23 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
在Yii框架中使用PHP模板引擎Twig的例子
2014/06/13 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
python图像处理之镜像实现方法
2015/05/30 Python
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
Python书单 不将就
2017/07/11 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
Python如何定义有默认参数的函数
2020/08/10 Python
Python ellipsis 的用法详解
2020/11/20 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
Linux的主要特性
2014/10/06 面试题
Python爬虫之爬取二手房信息
2021/04/27 Python
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle
浅谈克隆 JavaScript
2021/11/02 Javascript