web项目 day02(四)

手机验证码接口

一. 路由解析与视图函数

去user文件夹下的urls .py文件下去添加路由
在这里插入图片描述
这里有个方法,Alt + enter 键快速创建视图函数,就不用这么麻烦还要去api .py文件下手动创建视图函数了
在这里插入图片描述
确定手机验证码接口流程:

  • 验证手机格式
  • 生成验证码
  • 保存验证码
  • 发送验证码

为了降低代码的冗余,提高代码的复用性,可以将一些重复使用的功能,放到某个文件夹中,这样可以使代码更加精炼

可以在项目文件的根目录下创建一个包,命名为common,在这个包中,不与具体模块关联的独立的东西写到这里,比如创建一些功能文件,这些文件中的内容可供重复调用,这样,代码就更加精炼
在这里插入图片描述

二. 验证手机格式

1. 使用正则的方式去验证手机号格式是否正确
  1. 测试正则匹配
    像一些简单的测试,可以用ipython的方式
    在这里插入图片描述
  2. 编写函数
    在这里插入图片描述
    这里为什么要多一个strip()方法呢?因为前端传回来的数据可能首尾有空格,这个谁也不敢保证,代码需要严谨,考虑到一切可能发生的情况,如果是手机号中间有空格,那就是前端的锅了,说明前端处理数据不准确

开发是一件严谨的事,写完函数之后,一定要测试一下有没有错误,这样可以减少一些不必要的麻烦
使用ipython工具,就不用大动干戈,运行一大堆的代码
在这里插入图片描述
可以在pycharm的终端中使用ipython,也可以在Ubuntu的终端使用ipython

三. 生成验证码

1. 测试接口

如果手机号匹配正确,则发送验证码,否则返回错误码给前端
在这里插入图片描述
先简单返回一下状态码意思一下,如果手机号验证正确,应该生成验证码返回给前端,但生成状态码这个功能还比较麻烦,先测试一下能不能成功返回状态码

这里就使用postman工具比较方便了,
如果没有安装,可以参考该篇文章 https://blog.csdn.net/qq_44614026/article/details/96477851

首先运行apis .py文件
在这里插入图片描述
然后通过postman发送表单数据
在这里插入图片描述

2. 将错误码统一放入errors .py文件

为了使得代码更加精炼,将错误码统一放入一个文件中
在这里插入图片描述
这样还能避免状态码的冲突(两种错误返回了同一个状态码)

导入errors .py模块,将代码中的数字改为状态码对应的错误
在这里插入图片描述
为了避免出错,一样可以用Postman去测试

3. reder_json的封装 (着重注意)
  1. 前面第1篇中的文档中有提及,将接口定义成一种基本的格式,这样前端才能更明确的接收后端传过来的数据,所以应该抽象出一个函数,将格式定义成下面这样
    在这里插入图片描述
    文档中提供了相应的代码
    在这里插入图片描述
    根据这种方法,来修饰一下所写的代码
    这个方法,属于比较底层的代码,和我们的业务是没有什么关联的,这个代码,放到另外的项目中,也是可以直接使用的,所以,这类代码,可以独立放在一个文件夹的模块中,只要导入这个模块,就能调用这个方法

  2. 创建一个libs文件夹,用于放置底层的模块,在该文件夹中建立一个http .py文件,填写代码去实现这个方法

在这里插入图片描述
默认返回的错误码为ok,如果正确返回的话data中是不需要返回数据的,data为None,只需要返回code就行;
如果data有值的话,再加上.这样可以减少接口数据的传输量(在公司的正式开发中,需要尽可能减少接口数据的传输量,举个例子,接口数据的传输量越少,http的传输量也会变小,用户访问的速度会加快,如果网站访问量很多,这样去减少接口数据量的传输,也可以减少服务器的开销)
最后,通过JsonResponse将数据返回给前端
在这里插入图片描述
然后修改一下api .py文件,这样返回的内容就减少了,减少了接口传输数据的开销
在这里插入图片描述

  1. 测试一下能不能返回josn数据
    使用Postman工具测试
    在这里插入图片描述
    可以正确返回,但是有一个问题,数据0的前面有空格,这个空格是多余字符,没必要传输的字符,没有意义
    所以,还需要优化一下代码

  2. 定义分隔符
    json.dump中有这样一个参数 separators,可以定义符号前后的空格数,现在要将符号的空格数为0
    在这里插入图片描述
    优化代码
    在这里插入图片描述
    测试一下,可以看到空格就没了,所以接口数据的传输就减少了一个字节
    在这里插入图片描述

4. 生成验证码

验证码是一个固定长度的随机数,不单单手机号这里可能要生成验证码,还有其他地方也可能用到验证码,所以可以把生成验证码这个模块独立出来,同样,将其放入utils .py文件中
生成手机验证码这里默认取4位数字,使用随机数生成,为了方便修改,采用取长度的方式生成103 ~ 104 的随机整数(前开后闭),可以转成字符串,看具体需求
在这里插入图片描述
但是,这样有个问题,代码一定要严谨,如果其他地方要生成验证码,传过来的不是length不是整型,或者这个数字为小于1的数,那么这个函数在其他地方被调用的时候,就会报错,所以对传入该函数的参数需要进行判断
在这里插入图片描述
如果传入的参数有误,就生成一位数的状态码,这样也不会报错,让程序停止

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值