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 相关文章推荐
python3编写C/S网络程序实例教程
Aug 25 Python
python编码最佳实践之总结
Feb 14 Python
Python处理命令行参数模块optpars用法实例分析
May 31 Python
解决在pycharm中显示额外的 figure 窗口问题
Jan 15 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
python实现屏保程序(适用于背单词)
Jul 30 Python
PHP统计代码行数的小代码
Sep 19 Python
python常用排序算法的实现代码
Nov 08 Python
Python 列表中的修改、添加和删除元素的实现
Jun 11 Python
Python json格式化打印实现过程解析
Jul 21 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
Jul 30 Python
python中绕过反爬虫的方法总结
Nov 25 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/11 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
php禁用cookie后session设置方法分析
2016/10/19 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
JavaScript 创建对象
2009/07/17 Javascript
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
jquery实现人性化的有选择性禁用鼠标右键
2014/06/30 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
js简易版购物车功能
2017/06/17 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
python实现socket端口重定向示例
2014/02/10 Python
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
Python写的一个简单监控系统
2015/06/19 Python
Python多线程和队列操作实例
2015/06/21 Python
python 网络编程详解及简单实例
2017/04/25 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
Django 请求Request的具体使用方法
2019/11/11 Python
Python递归函数特点及原理解析
2020/03/04 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
python 元组和列表的区别
2020/12/30 Python
python 装饰器重要在哪
2021/02/14 Python
简约控的天堂:The Undone
2016/12/21 全球购物
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
尊老爱幼演讲稿
2014/09/04 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
java如何实现socket连接方法封装
2021/09/25 Java/Android