四. Django项目之电商购物商城 -- 图片验证码生成

Django项目之电商购物商城 – 图片验证码生成

需要开发文档和前端资料的可私聊

一. 图片验证码的生成

1. 创建应用用于生成图片验证码 , 以及短信验证码

python manage.py startapp verfications

2.配置radis数据库

"var_code":{# 配置数据库指定引擎"BACKEND" : "django_redis.cache.RedisCache",# 配置使用 Redis 的数据库名称"LOCATION" : "redis://127.0.0.1:6379/2","OPTIONS":{"CLIENT_CLASS" : "django_redis.client.DefaultClient"}},

3.认证应用 , 分发路由 , 创建路由

认证app

'verfications.apps.VerficationsConfig',

分发路由

path('', include('verfications.urls')),

创建验证码路由

re_path('^image_code/(?P<uuid>[\w-]+)/$' , views.ImageCodeView.as_view())

4. 生成图片验证码

from random import randint , choice
from PIL import Image , ImageDraw , ImageFont
import io , os# 制作随机验证码:数字,大小写字母
def get_random_code():# 随机数字number = str(randint(0,9))# 随机大写字母upper = chr(randint(65 , 90))# 随机小写字母lower = chr(randint(97, 122))# 再大小写字母和数字中再随机获取一个code = choice([number , upper , lower])return code# 获取随机颜色
def get_color():return (randint(0,255),randint(0,255),randint(0,255))# 制作图片
def create_img():# 创建图片对象img = Image.new(mode='RGB' , size=(90 , 30),color=get_color())# 创建画笔工具draw = ImageDraw.Draw(img)# 制作图片噪点# 噪点for i in range(60):# point([xy:图片的坐标] , fill颜色)draw.point([randint(0,150) , randint(0,30)] , fill=get_color())# 噪线for i in range(8):# line([xy:图片的坐标] , fill颜色)draw.line([randint(0,150) , randint(0,30),randint(0,150) , randint(0,30)] , fill=get_color())# 圆,弧线x = randint(0, 150)y = randint(0,15)for i in range(5):draw.arc([ x,y ,x*2 , y*2] ,0, 90 ,fill=get_color() )# 设置字体 , 导入字体文件 , 设置字体大小dir = os.path.join(os.path.dirname(__file__) , 'fonts','Arial.ttf')font = ImageFont.truetype(dir,24)# 拼接生成的验证码text = ''# 生成验证码for i in range(4):c = get_random_code()# 将获取到的验证码字符写入到图片中draw.text((10+20*i , 2) , text=c , fill=get_color() , font=font)text += c# 将图片保存到内存中out = io.BytesIO()# 保证验证码的图片img.save(out , format='png')return out.getvalue() , textif __name__ == '__main__':img , text = create_img()print(text)

4. 创建相应视图

在登录的js代码中会生成uuid作为图片验证码的url , 从而避免在多人注册的情况下生成的验证码被覆盖

from django.shortcuts import render , HttpResponse
from django.views import View
from verfications.PictureCode import CodeImg
from django_redis import get_redis_connection
# Create your views here.class ImageCodeView(View):# 获得uuid的参数def get(self , request , uuid):# 获得验证码 以及图片image , code = CodeImg.create_img()# 将数据保存到redis数据库redis_conn = get_redis_connection('var_code')redis_conn.setex(f'image_{uuid}' , 60 , code)return HttpResponse(image , content_type='image/png')

修改前端代码 , 绑定相关方法

<li><label>图形验证码:</label><input type="text" name="image_code" id="pic_code" class="msg_input"v-model="image_code" @blur="check_image_code"><img v-bind:src="image_code_url" alt="图形验证码" class="pic_code"@click="generate_image_code"><span class="error_tip" v-show="error_image_code">请填写图形验证码</span>
</li>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/5876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

访问网站提示502 Bad Gateway的原因和解决方法

"502 Bad Gateway"错误通常表示服务器作为网关或代理服务器尝试访问上游服务器(如应用服务器或其他代理服务器)&#xff0c;但未能从上游服务器接收到有效的响应。以下是可能导致此错误的一些常见原因以及相应的解决方法&#xff1a; 1. 服务器端问题&#xff1a; 服…

Unity Audio Filter 入门

概述&#xff1a; 如果你在你项目中需要一些特殊的声音效果&#xff0c;那这部分声音过滤器的部分一定不要错过喔&#xff0c;让我们来学习这部分的内容吧&#xff01; 这部分理论性比较强&#xff0c;认真看我的注解哈&#xff0c;我尽量解释的易懂一点。 Audio Chorus Filter…

Intelij Idea Push失败,出现git Authentication failed(验证失败)

目录 1、出现问题的原因 2、解决之法 1、出现问题的原因 能出现这种问题&#xff0c;最主要的原因是链接对上了&#xff0c;但用户验证失败了&#xff0c;即登录失败。 因为服务器转移或者换了git项目链接&#xff0c;导致你忘记了用户名密码&#xff0c;随意输入之后&…

持续更新|UNIAPP适配APP遇到的问题以及解决方案

在使用UNIAPP开发APP的时候遇到的一些奇奇怪怪问题记录 组件样式丢失 问题&#xff1a;组件引入界面中&#xff0c;在小程序和H5环境下样式正常&#xff0c;而在APP中却出现高度异常问题 解决&#xff1a;增加view标签将组件包裹起来即可正常显示 解决前&#xff1a; 解决后…

数据结构:实验七:数据查找

一、 实验目的 &#xff08;1&#xff09;领会各种查找算法的过程和算法设计。 &#xff08;2&#xff09;掌握查找算法解决实际问题。 二、 实验要求 &#xff08;1&#xff09;编写一个程序exp8-1.cpp, 按提示输入10个任意的整形数据&#xff08;无序&#xff09;&…

socat移植到arm+linux

socat是一个用于建立双向数据流传输的工具&#xff0c;它可以在不同的网络层上创建连接&#xff0c;并支持多种协议&#xff0c;如TCP、UDP、SSL等。它非常强大且易于使用&#xff0c;因此广泛用于网络开发和系统管理中&#xff0c;这里记录一下移植到嵌入式系统的过程。 下载s…

每天学习一个Linux命令之sed

每天学习一个Linux命令之sed 欢迎来到我的博客系列&#xff0c;今天我们将学习一个非常强大的Linux命令——sed&#xff0c;它可以在文本处理中实现各种强大的操作。sed&#xff08;Stream Editor&#xff09;是Linux环境下的一种流编辑器&#xff0c;可以对文件内容进行替换、…

Mysql_数据库事务

文章目录 &#x1f60a; 作者&#xff1a;Lion J &#x1f496; 主页&#xff1a; https://blog.csdn.net/weixin_69252724 &#x1f389; 主题&#xff1a; MySQL__事务&#xff09; ⏱️ 创作时间&#xff1a;2024年04月26日 ———————————————— 这里写目…

服务端不 listen 可以创建 tcp 连接吗

这个问题有三类答案。 上来就撸 linux kernel 源码&#xff0c;折腾半天&#xff0c;哦&#xff0c;终于在 tcp_rcv_state_process 里找到了 tcp_rcv_synsent_state_process 调用&#xff0c;后者包含&#xff1a; if (th->syn) {/* We see SYN without ACK. It is attemp…

【golang-ent】go-zero框架 整合 ent orm框架实现一对一 一对多 多种姿势查询方式

一、ent的 O2O 问题 官方文档如下: https://entgo.io/zh/docs/schema-edges#o2o-same-type 1、ent O2O问题 官方提供了三种 one2one的方式,可以看到他全部使用了 mysql的 foregionKey 的方式进行关联,虽然举例了单表和双表的不同使用方式,但是我们实际使用mysql中是不创建…

【R语言数据分析】函数

目录 自定义函数 apply函数 分类汇总函数aggregate 自定义函数 R语言中的自定义函数更像是在自定义一种运算规则。 自定义函数的语法是 函数名 函数体 } 比如 表示定义了一个名为BMI_function的函数&#xff0c;这个函数代表了一种运算规则&#xff0c;就是把传入的x和…

目标检测算法YOLOv3简介

YOLOv3由Joseph Redmon等人于2018年提出&#xff0c;论文名为&#xff1a;《YOLOv3: An Incremental Improvement》&#xff0c;论文见&#xff1a;https://arxiv.org/pdf/1804.02767.pdf &#xff0c;项目网页&#xff1a;https://pjreddie.com/darknet/yolo/ 。YOLOv3是对YOL…

实习周志定制

实习周记一 踏进跃升成人文化培训学校有限公司的大门&#xff0c;我的内心充满了激动和期待。第一周的实习&#xff0c;我主要参与了公司文化的学习&#xff0c;了解了公司的教育理念和教学模式。我逐渐认识到&#xff0c;前台工作不仅仅是简单的接待&#xff0c;更是学校形象…

Node.js -- express 框架

文章目录 1. express 使用2. 路由2.1 路由的使用2.2 获取请求报文参数2.3 获取路由参数2.4 路由参数练习 3. express 响应设置4. 中间件4.1 全局中间件4.2 路由中间件4.3 静态资源中间件 5. 获取请求体数据 body-parser6. 防盗链7. 路由模块化8. 模板引擎8.1 了解EJS8.2 列表渲…

[技术总结]: Pytorch加速和省内存

目录 mmengine 相关文档pytorch ddp dataset使用共享内存加速数据读取一些大规模数据集加载模型多卡训练, 模型并行 mmengine 相关文档 MMEngine理解 pytorch ddp dataset使用共享内存 关键在于将data_list序列化 mmengine实现 或者使用lmdb数据库也可以 加速数据读取 使…

【C++】深入理解string类

一、熟悉string类 1.1 string类的由来&#xff1a; C语音中的字符串需要我们自己管理底层空间&#xff0c;容易内存泄露。而C是面向对象语音&#xff0c;所以它把字符串封装成一个string类。 C中对于string的定义为&#xff1a;typedef basic_string string; 也就是说C中的str…

java面试(微服务)

SpringCloud五大组件 Nacos&#xff1a;注册中心Ribbon&#xff1a;负载均衡Feign&#xff1a;远程调用sentinel&#xff1a;服务熔断Gateway&#xff1a;网关 注册中心 Eureka Nacos 负载均衡 Ribbon负载均衡流程 Ribbon的负载均衡策略 RoundRobinRule&#xff1a;简单的…

C++中把Lambda 表达式作为参数传递给模板函数。

例子&#xff1a; template<class fun> void mytest(fun f) {_string s1 "abc";_string s2 "abc";if (f(s1, s2)){std::cout << "相等。\n";}}int main() {mytest([](const _string s1, const _string& s2) { return s1 s2; …

贪心-区间问题

区间选点和最大不相交区间数量 区间选点问题描述 问题描述 给定 N个闭区间 [ai,bj]&#xff0c;请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N&…

python学习笔记----异常、模块与包(九)

一、异常 1.1 什么是异常 在Python中&#xff0c;异常是程序执行时发生的错误。当Python检测到一个错误时&#xff0c;它会引发一个异常&#xff0c;这可能是由于多种原因&#xff0c;如尝试除以零、访问不存在的文件&#xff0c;或者尝试从列表中获取不存在的索引等。异常处…