django中的图片验证码功能
时间:2019-09-18
本文章向大家介绍django中的图片验证码功能,主要包括django中的图片验证码功能使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
python的验证码库(captcha)
将验证码做成这样:
是不是和各大网页的图片源地址是一样,话不多说,让我们看代码:
我是用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中的图片验证码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Oracle删除索引规范
- mysql中走与不走索引的情况汇集(待全量实验)
- C#标准事件流
- 【STM32F407开发板用户手册】第25章 STM32F407的TIM定时器基础知识和HAL库API
- 【STM32F429开发板用户手册】第25章 STM32F429的TIM定时器基础知识和HAL库API
- AkShare-债券数据-全球债券行情
- AkShare-指数数据-全球指数
- AkShare-股票数据-机构推荐
- AkShare-债券数据-可转债
- AkShare-股票数据-基金持股
- AkShare-股票数据-股票更名
- AkShare-股票数据-终止和暂停上市股票
- AkShare-股票数据-股票列表
- AkShare-股票数据-板块详情
- AkShare-股票数据-板块行情