python编程快速上手(持续更新中…)
python实战项目(Django技术点)
1、容联云短信平台-注册
A/注册:(默认8元,1分钱/条)
B/绑定测试号码
C/导入包yuntongxin
D/修改sms.py 3处主要信息
E/修改测试手机号
F/修改路径
#测试的时候使用
from libs.yuntongxun.CCPRestSDK import REST
2、业务分析
1.为了避免用户使用图形验证码恶意测试,我们提取了图形验证码后,立即删除Redis中的图形验证码。
2.保存短信验证码是为注册做准备的。
3.Django不具备发送短信的功能,所以我们借助第三方的容联云通讯短信平台来帮助我们发送短信验证码。
3、短信验证码后端分析
4、代码实现
class SmsCodeView(View):
def get(self, request, mobile):
# 1. 获取请求参数
image_code = request.GET.get('image_code')
uuid = request.GET.get('image_code_id')
# 2. 验证参数
if not all([image_code, uuid]):
return JsonResponse({'code': 400, 'errmsg': '参数不全'})
# 3. 验证图片验证码
# 3.1 连接redis
from django_redis import get_redis_connection
redis_cli = get_redis_connection('default')
# 3.2 获取redis数据
redis_image_code = redis_cli.get(uuid)
if redis_image_code is None:
return JsonResponse({'code': 400, 'errmsg': '图片验证码已过期'})
# 3.3 对比
if redis_image_code.decode().lower() != image_code.lower():
return JsonResponse({'code': 400, 'errmsg': '图片验证码错误'})
# 4. 生成短信验证码
from random import randint
sms_code = '%06d' % randint(0, 999999)
# 5. 保存短信验证码
redis_cli.setex(mobile, 300, sms_code)
# 6. 发送短信验证码
from libs.yuntongxun.sms import CCP
CCP().send_template_sms(mobile, [sms_code, 5], 1)
# 7. 返回响应
return JsonResponse({'code': 0, 'errmsg': 'ok'})
5.限制频繁验证
A/业务分析
B/添加标志位
C/ 添加验证
if(response.data == 400){
this.error_sms_code_message = response.data.errmsg;
this.error_sms_code = true;
}