使用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的bottle框架跨域请求报错问题的处理方法
Mar 19 Python
Python实现学生成绩管理系统
Apr 05 Python
python3利用tcp实现文件夹远程传输
Jul 28 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
python实现淘宝购物系统
Oct 25 Python
Python多继承以及MRO顺序的使用
Nov 11 Python
解决Python spyder显示不全df列和行的问题
Apr 20 Python
python db类用法说明
Jul 07 Python
python删除文件、清空目录的实现方法
Sep 23 Python
python 发送邮件的四种方法汇总
Dec 02 Python
python之np.argmax()及对axis=0或者1的理解
Jun 02 Python
Python 一键获取电脑浏览器的账号密码
May 11 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 #Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 #Python
详细介绍python类及类的用法
教你怎么用PyCharm为同一服务器配置多个python解释器
用python批量解压带密码的压缩包
May 31 #Python
变长双向rnn的正确使用姿势教学
如何在Python项目中引入日志
You might like
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
php4的session功能评述(一)
2006/10/09 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
如何使用Python标准库进行性能测试
2019/06/25 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
全球性的众包图形设计市场:DesignCrowd
2021/02/02 全球购物
EJB的基本架构
2016/09/22 面试题
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
写好自荐信要注意的问题
2013/11/10 职场文书
护理学院专科毕业生求职信
2014/06/28 职场文书
九华山导游词
2015/02/03 职场文书
事业单位工作人员年度考核个人总结
2015/02/12 职场文书
安全责任协议书范本
2016/03/23 职场文书
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python