使用Django实现商城验证码模块的方法


Posted in Python onJune 01, 2021

本文主要涉及图形验证码的相关功能,主要包括,图形验证码获取、验证码文字存储、验证码生成等。

图形验证码接口设计和定义

 验证码获取接口设计

使用Django实现商城验证码模块的方法

uuid作为路径参数,唯一标识验证码所属用户

新建应用

验证码的相关逻辑我们用一个单独的app处理,所以这里需要新建一个叫verifications的app,建好app后,打开views.py视图文件,编写一个验证码的视图类

class ImageCodeView(View):
    """图形验证码"""
    def get(self, request, uuid):
        """
        :param request: 请求对象
        :param uuid: 唯一标识图形验证码所属于的用户
        :return: image/jpg
        """
        pass

然后配置路由

项目路由配置:

path('', include('apps.verifications.urls')),配置app的路由

path('image_codes/``uuid:uuid``/', views.ImageCodeView.as_view()),

验证码处理相关准备工作

准备captcha扩展包

​ 把captcha扩展包放到verifications的lib目录下,然后需要安装Python的图片处理库,pip install Pillow

准备Redis数据库

redis用来存储图片验证码上的数字,后面会用来做校验

"verify_code": { # 验证码
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/2",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },

图形验证码后端逻辑实现

class ImageCodeView(View):
    """图形验证码
    """

    def get(self, request, uuid):
        """
        实现图形验证码逻辑
        :param uuid: UUID
        :return: image/jpg
        """
        # 生成图形验证码
        text, image = captcha.generate_captcha()

        # 保存图形验证码
        # 使用配置的redis数据库的别名,创建连接到redis的对象
        redis_conn = get_redis_connection('verify_code')
        # 使用连接到redis的对象去操作数据存储到redis
        # redis_conn.set('key', 'value') # 因为没有有效期
        # 图形验证码必须要有有效期的:设计是300秒有效期
        # redis_conn.setex('key', '过期时间', 'value')
        redis_conn.setex('img_%s' % uuid, 300, text)

        # 响应图形验证码: image/jpg
        return http.HttpResponse(image, content_type='image/jpg')

图形验证码前端逻辑

Vue实现图形验证码展示

1.register.js

mounted(){
    // 生成图形验证码
    this.generate_image_code();
},
methods: {
    // 生成图形验证码
    generate_image_code(){
        // 生成UUID。generateUUID() : 封装在common.js文件中,需要提前引入
        this.uuid = generateUUID();
        // 拼接图形验证码请求地址
        this.image_code_url = "/image_codes/" + this.uuid + "/";
    },
    ......
}

2.register.html

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

3.图形验证码展示和存储效果

Vue实现图形验证码校验

1.register.html

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

2.register.js

check_image_code(){
    if(!this.image_code) {
        this.error_image_code_message = '请填写图片验证码';
        this.error_image_code = true;
    } else {
        this.error_image_code = false;
    }
},

3.图形验证码校验效果

使用Django实现商城验证码模块的方法

至此验证码部分就说完了

到此这篇关于使用Django实现商城验证码模块的方法的文章就介绍到这了,更多相关Django 商城验证码模块内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python导入时小括号大作用
Jan 10 Python
Python DataFrame 设置输出不显示index(索引)值的方法
Jun 07 Python
python一行sql太长折成多行并且有多个参数的方法
Jul 19 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
python matplotlib折线图样式实现过程
Nov 04 Python
python 解决cv2绘制中文乱码问题
Dec 23 Python
Windows下实现将Pascal VOC转化为TFRecords
Feb 17 Python
python opencv进行图像拼接
Mar 27 Python
Python3爬虫里关于代理的设置总结
Jul 30 Python
golang/python实现归并排序实例代码
Aug 30 Python
python 批量下载bilibili视频的gui程序
Nov 20 Python
python缺失值填充方法示例代码
Dec 24 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 #Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 #Python
详细介绍python类及类的用法
教你怎么用PyCharm为同一服务器配置多个python解释器
用python批量解压带密码的压缩包
May 31 #Python
变长双向rnn的正确使用姿势教学
如何在Python项目中引入日志
You might like
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
jquery 上下滚动广告
2009/06/17 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
javascript伸缩型菜单实现代码
2015/11/16 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
[19:15]DK战队纪录片
2014/09/02 DOTA
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
Python接收手机短信的代码整理
2020/08/02 Python
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
竞聘演讲稿范文
2014/01/12 职场文书
语文教学感言
2014/02/06 职场文书
企业内控岗位的职责
2014/02/07 职场文书
爽歪歪广告词
2014/03/20 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
基层党建工作简报
2015/07/21 职场文书
《落花生》教学反思
2016/02/16 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
介绍一下28个JS常用数组方法
2022/05/06 Javascript