使用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多线程编程(二):启动线程的两种方法
Apr 05 Python
Python中is与==判断的区别
Mar 28 Python
Python实现获取命令行输出结果的方法
Jun 10 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
python如何在循环引用中管理内存
Mar 20 Python
python3+PyQt5使用数据库表视图
Apr 24 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
Python中面向对象你应该知道的一下知识
Jul 10 Python
python3中替换python2中cmp函数的实现
Aug 20 Python
python 函数中的参数类型
Feb 11 Python
Python数据可视化常用4大绘图库原理详解
Oct 23 Python
分享7个 Python 实战项目练习
Mar 03 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 #Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 #Python
详细介绍python类及类的用法
教你怎么用PyCharm为同一服务器配置多个python解释器
用python批量解压带密码的压缩包
May 31 #Python
变长双向rnn的正确使用姿势教学
如何在Python项目中引入日志
You might like
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
php项目打包方法
2008/02/18 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
laravel 4安装及入门图文教程
2014/10/29 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
用jscript启动sqlserver
2007/06/21 Javascript
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
bootstrap轮播图示例代码分享
2017/05/17 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
Python实现拼接多张图片的方法
2014/12/01 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
django如何实现视图重定向
2019/07/24 Python
Python autoescape标签用法解析
2020/01/17 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
客房主管岗位职责
2013/12/09 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
质量标语大全
2014/06/12 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
房地产财务经理岗位职责
2015/04/08 职场文书
运动会运动员赞词
2015/07/22 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python