使用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 Django批量导入不重复数据
Mar 25 Python
qpython3 读取安卓lastpass Cookies
Jun 19 Python
Python闭包的两个注意事项(推荐)
Mar 20 Python
python实现简易通讯录修改版
Mar 13 Python
Python中多个数组行合并及列合并的方法总结
Apr 12 Python
python 获取微信好友列表的方法(微信web)
Feb 21 Python
python 识别登录验证码图片功能的实现代码(完整代码)
Jul 03 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 Python
python基于tkinter制作无损音乐下载工具
Mar 29 Python
pytorch锁死在dataloader(训练时卡死)
May 28 Python
详解Python requests模块
Jun 21 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 #Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 #Python
详细介绍python类及类的用法
教你怎么用PyCharm为同一服务器配置多个python解释器
用python批量解压带密码的压缩包
May 31 #Python
变长双向rnn的正确使用姿势教学
如何在Python项目中引入日志
You might like
解析php中curl_multi的应用
2013/07/17 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
javascript some()函数用法详解
2014/11/13 PHP
PHP生成压缩文件实例
2015/02/07 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
Javascript中replace()小结
2015/09/30 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
2016/06/25 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
VUE 单页面使用 echart 窗口变化时的用法
2020/07/30 Javascript
python中xrange用法分析
2015/04/15 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
成人毕业生自我鉴定
2013/10/18 职场文书
护士毕业生自我鉴定
2014/02/08 职场文书
我为自己代言广告词
2014/03/18 职场文书
火灾现场处置方案
2014/05/28 职场文书
建筑工地宣传标语
2014/06/18 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
2014财务年度工作总结
2014/11/11 职场文书
解析Java中的static关键字
2021/06/14 Java/Android
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle