使用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设计模式之访问者模式
Nov 18 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
朴素贝叶斯Python实例及解析
Nov 19 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
Python集中化管理平台Ansible介绍与YAML简介
Jun 12 Python
python每5分钟从kafka中提取数据的例子
Dec 23 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 Python
PyTorch加载自己的数据集实例详解
Mar 18 Python
小 200 行 Python 代码制作一个换脸程序
May 12 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
Jun 29 Python
Python判断字符串是否为合法标示符操作
Sep 03 Python
使用AJAX和Django获取数据的方法实例
Oct 25 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 #Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 #Python
详细介绍python类及类的用法
教你怎么用PyCharm为同一服务器配置多个python解释器
用python批量解压带密码的压缩包
May 31 #Python
变长双向rnn的正确使用姿势教学
如何在Python项目中引入日志
You might like
使用PHP实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
2011/10/09 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
2017/02/23 PHP
JavaScript基本对象
2007/01/11 Javascript
asp 的 分词实现代码
2007/05/24 Javascript
javascript数组的扩展实现代码集合
2008/06/01 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
2015/08/24 Javascript
浅谈JS运算符&amp;&amp;和|| 及其优先级
2016/08/10 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
js实现3D旋转相册
2020/08/02 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
python批量修改图片大小的方法
2018/07/24 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
Python如何将模块打包并发布
2020/08/30 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
工作批评与自我批评范文
2014/10/16 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
慰问信模板
2015/02/14 职场文书
逃课检讨书范文
2015/05/06 职场文书
爱国电影观后感
2015/06/19 职场文书
酒店开业主持词
2015/07/02 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis