使用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 11 Python
Python如何判断数独是否合法
Sep 08 Python
浅谈编码,解码,乱码的问题
Dec 30 Python
Python编程修改MP3文件名称的方法
Apr 19 Python
pip matplotlib报错equired packages can not be built解决
Jan 06 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
Python代码太长换行的实现
Jul 05 Python
Python线程指南分享
Nov 19 Python
python学生管理系统的实现
Apr 05 Python
Scrapy爬虫文件批量运行的实现
Sep 30 Python
用python计算文件的MD5值
Dec 23 Python
python和anaconda的区别
May 06 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 #Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 #Python
详细介绍python类及类的用法
教你怎么用PyCharm为同一服务器配置多个python解释器
用python批量解压带密码的压缩包
May 31 #Python
变长双向rnn的正确使用姿势教学
如何在Python项目中引入日志
You might like
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
分享一下贝贝成长进度的php代码
2012/09/14 PHP
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
My Desktop :) 桌面式代码
2008/12/29 Javascript
javascript开发中因空格引发的错误
2010/11/08 Javascript
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
Python列表推导式的使用方法
2013/11/21 Python
粗略分析Python中的内存泄漏
2015/04/23 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
python生成n个元素的全组合方法
2018/11/13 Python
对python修改xml文件的节点值方法详解
2018/12/24 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
美国最便宜的旅游网站:CheapTickets
2017/07/09 全球购物
实习自我鉴定模板
2013/09/28 职场文书
仓库组长岗位职责
2014/01/29 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
关于美容院的活动方案
2014/08/14 职场文书
安全教育日主题班会
2015/08/13 职场文书
nginx请求限制配置方法
2021/07/09 Servers