django中的图片验证码功能
作者:↘妳是我の半途ёг廢√ 发布时间:2022-06-10 00:07:54
标签: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中的图片验证码功能,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://blog.csdn.net/weixin_44482817/article/details/88869516


猜你喜欢
- 前言前面我们已经介绍了 python面向对象入门教程之从代码复用开始(一) ,这篇文章主要介绍的是关于Python面向对象之设置对
- 成功解决ValueError: Supported target types are: ('binary', 'mu
- 引言在做科学计算或者模拟仿真的时候,相信不少小伙伴会遇到这样的问题,比如,我们有一个一维数组如下所示:array = [1, 2, 3, 4
- 你需要添加两个按钮:一个按钮使所有英雄都可以死亡,而另一个按钮使所有英雄永生。由于它会影响所有英雄,而与选择无关,因此这需要一个单独的按钮,
- 1 前言在咱们编写 SQL 语句操作数据库中的数据的时候,有可能会遇到一些不太爽的问题,例如对于同一字段拥有相同名称的记录,我们只需要显示一
- Pandas使用这些函数处理缺失值:isnull和notnull:检测是否是空值,可用于df和seriesdropna:丢弃、删除缺失值ax
- 前言有时候我们为了更好的利用计算机资源,可以把一些耗时长的任务队列化异步执行。举个对应简单的生活中例子就是大多数餐厅里面点菜都是先找地方做,
- Vue.js是一个轻巧、高性能、可组件化的MVVM库,同时拥有非常容易上手的API。分页一般和表格一起用,分页链接作为表格的一部分,将分页链
- 一、首先从SQLServer中Error讲起,SQL中错误处理有些怪辟 错误级别同是16但结果都不同。select *
- 近段时间由于修改一个ASP程序(有SQL注入漏洞),在网上找了很多相关的一些防范办法,都不近人意,所以我将现在网上的一些方法综合改良了一下,
- TensorBoard是TensorFlow下的一个可视化的工具,能够帮助我们在训练大规模神经网络过程中出现的复杂且不好理解的运算。Tens
- 本文实例讲述了Python3模拟登录操作。分享给大家供大家参考,具体如下:模拟登录_要求:1. 用户输入账号密码进行登录2. 用户信息保存在
- 说明1、将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果。2、结构分为Abstraction抽象类、Refin
- 需求:查询表dbo.Message,每页10条,查询第2页1:TOP()SELECT TOP(20) * FROM dbo.Message
- Numpy中提供了concatenate,append, stack类(包括hsatck、vstack、dstack、row_stack、c
- element-ui界面非常简洁和美观,提供的组件可以满足绝大多数的应用场景,当表格中显示了图片的缩略图时,想要鼠标浮动在缩略图上时放大图片
- 1.函数array()功能:创建一个数组变量格式:array(list)参数:list为数组变量中的每个数值列,中间用逗号间隔例子:<
- 本文实例为大家分享了js实现直播点击飘心效果的具体代码,供大家参考,具体内容如下<!DOCTYPE html><html&
- 本文实例讲述了python获取图片颜色信息的方法。分享给大家供大家参考。具体分析如下:python的pil模块可以从图片获得图片每个像素点的
- 一、ZeroClipboard下载地址为大家提供细一些ZeroClipboard的下载地址:Zero Clipboard 开源的 JavaS