使用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 05 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
pip matplotlib报错equired packages can not be built解决
Jan 06 Python
Python如何抓取天猫商品详细信息及交易记录
Feb 23 Python
python字符串常用方法
Jun 14 Python
Python中extend和append的区别讲解
Jan 24 Python
了解不常见但是实用的Python技巧
May 23 Python
pyqt5使用按钮进行界面的跳转方法
Jun 19 Python
python 数据库查询返回list或tuple实例
May 15 Python
基于Python下载网络图片方法汇总代码实例
Jun 24 Python
教你用python控制安卓手机
May 13 Python
python编写五子棋游戏
May 25 Python
pytorch通过训练结果的复现设置随机种子
Jun 01 #Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 #Python
详细介绍python类及类的用法
教你怎么用PyCharm为同一服务器配置多个python解释器
用python批量解压带密码的压缩包
May 31 #Python
变长双向rnn的正确使用姿势教学
如何在Python项目中引入日志
You might like
PHP反向代理类代码
2014/08/15 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
PHP将字符串首字母大小写转换的实例
2017/01/21 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
用javascript模仿ie的自动完成类似自动完成功的表单
2012/12/12 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
Python3计算三角形的面积代码
2017/12/18 Python
Python实现的HMacMD5加密算法示例
2018/04/03 Python
Python切片操作深入详解
2018/07/27 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
Python匿名函数及应用示例
2019/04/09 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
美国美妆网站:B-Glowing
2016/10/12 全球购物
优秀老员工获奖感言
2014/02/15 职场文书
525心理活动总结
2014/07/04 职场文书
毕业证代领委托书
2014/09/26 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
2014年学前班工作总结
2014/12/08 职场文书
电影地道战观后感
2015/06/04 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL