使用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多线程学习资料
Dec 19 Python
python读写ini文件示例(python读写文件)
Mar 25 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
python 处理dataframe中的时间字段方法
Apr 10 Python
python简易远程控制单线程版
Jun 20 Python
python lxml中etree的简单应用
May 10 Python
python多线程下信号处理程序示例
May 31 Python
Python API 自动化实战详解(纯代码)
Jun 11 Python
python交易记录链的实现过程详解
Jul 03 Python
Python叠加两幅栅格图像的实现方法
Jul 05 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 Python
利用Python实时获取steam特惠游戏数据
Jun 25 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 #Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 #Python
详细介绍python类及类的用法
教你怎么用PyCharm为同一服务器配置多个python解释器
用python批量解压带密码的压缩包
May 31 #Python
变长双向rnn的正确使用姿势教学
如何在Python项目中引入日志
You might like
Yii调试SQL的常用方法
2014/07/09 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
2016/12/08 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
python概率计算器实例分析
2015/03/25 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
物业经理求职自我评价
2013/09/22 职场文书
高级电工工作职责
2013/11/21 职场文书
电气工程师岗位职责
2014/01/01 职场文书
舞蹈比赛获奖感言
2014/02/04 职场文书
房屋出售协议书
2014/04/10 职场文书
个人课题方案
2014/05/08 职场文书
党员个人党性分析材料
2014/12/18 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书