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数据结构中字典的心得
Dec 04 Python
Django基于ORM操作数据库的方法详解
Mar 27 Python
Selenium chrome配置代理Python版的方法
Nov 29 Python
学生信息管理系统Python面向对象版
Jan 30 Python
Python 实现顺序高斯消元法示例
Dec 09 Python
pycharm 实现本地写代码,服务器运行的操作
Jun 08 Python
python字典的值可以修改吗
Jun 29 Python
python接口自动化之ConfigParser配置文件的使用详解
Aug 03 Python
Python计算矩阵的和积的实例详解
Sep 10 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
Dec 15 Python
用Python制作音乐海报
Jan 26 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
Feb 22 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
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
浅谈PHP 闭包特性在实际应用中的问题
2009/10/30 PHP
php获取文件大小的方法
2014/02/26 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
php验证手机号码
2015/11/11 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
微信小程序 实例开发总结
2017/04/26 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
centos下更新Python版本的步骤
2013/02/12 Python
详细介绍Ruby中的正则表达式
2015/04/10 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
pymysql模块的操作实例
2019/12/17 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
Python celery原理及运行流程解析
2020/06/13 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
大学生实习证明范本
2014/01/15 职场文书
上班离岗检讨书
2014/01/27 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
品牌推广策划方案
2014/05/28 职场文书
实习单位指导教师评语
2014/12/30 职场文书
办公室卫生管理制度
2015/08/04 职场文书
浅析Django接口版本控制
2021/06/26 Python
MySql数据库 查询时间序列间隔
2022/05/11 MySQL
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python
python中 Flask Web 表单的使用方法
2022/05/20 Python