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中kmeans聚类实现代码
Feb 23 Python
python去掉空白行的多种实现代码
Mar 19 Python
Python利用openpyxl库遍历Sheet的实例
May 03 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
python 检查是否为中文字符串的方法
Dec 28 Python
python3利用ctypes传入一个字符串类型的列表方法
Feb 12 Python
Python实现的银行系统模拟程序完整案例
Apr 12 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
PyTorch的自适应池化Adaptive Pooling实例
Jan 03 Python
深入浅析Python 命令行模块 Click
Mar 11 Python
给ubuntu18安装python3.7的详细教程
Jun 08 Python
python selenium xpath定位操作
Sep 01 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学习之PHP变量
2006/10/09 PHP
php xml实例 留言本
2009/03/20 PHP
深入array multisort排序原理的详解
2013/06/18 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
在CMD命令行中运行python脚本的方法
2018/05/12 Python
python线程池如何使用
2020/05/28 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
详解三种方式实现平滑滚动页面到顶部的功能
2019/04/23 HTML / CSS
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
工业学校毕业生自荐信范文
2014/01/03 职场文书
关于打架的检讨书
2014/01/17 职场文书
公务员保密承诺书
2014/03/27 职场文书
初三开学计划书
2014/04/27 职场文书
爱岗敬业演讲稿
2014/05/05 职场文书
庆六一活动总结
2014/08/29 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
2014年话务员工作总结
2014/11/19 职场文书
转让协议书
2015/01/27 职场文书