美多商城注册页面前后端实现
分析要实现的业务逻辑,明确在这个业务中需要涉及到几个相关子业务,将每个子业务当做一个接口来设计:
分析接口的功能任务,明确接口的访问方式与返回数据:
- 接口的请求方式,如GET 、POST 、PUT等
- 接口的URL路径定义
- 需要前端传递的数据及数据格式(如路径参数、查询字符串、请求体表单、JSON等)
- 返回给前端的数据及数据格式
在前后端分离的应用模式中,我们作为后端开发人员设计后端接口时,可以不用考虑返回给前端数据后,前端如何处理,这是前端开发人员的工作,我们只需明确我们要保存的或者要返回的是什么数据即可。
明确上述每一点后,即可开始编写接口。
在用户注册中,需要实现一下接口:
- 图片验证码
- 短信验证码
- 用户名判断是否存在
- 手机号判断是否存在
- 注册保存用户数据
图片验证码、短信验证码考虑到后续可能会在其他业务中也用到,因此我们将图片验证码独立,创建一个应用新应用verifications,在此应用中实现图片验证码、短信验证码。
1.图片验证码
…
2. 短信验证码
- 使用Celery完成发送短信
在工程目录/meiduo_mall下创建celery_tasks用于保存celery异步任务。
在celery_tasks目录下创建config.py文件,用于保存celery的配置信息
> broker_url = "redis://127.0.0.1/14"
> result_backend = "redis://127.0.0.1/15"
在celery_tasks目录下创建main.py文件,用于作为celery的启动文件
from celery import Celery
#创建celery应用
app = Celery('meiduo')
#导入celery配置
app.config_from_object('celery_tasks.config')
#自动注册celery任务
app.autodiscover_tasks(['celery_tasks.sms'])
在celery_tasks目录下创建sms/tasks.py目录文件,用于保存发送短信的异步任务
from . import constants
from .yuntongxun.sms import CCP
from celery_tasks.main import app
@app.task(name='send_sms_code')
def send_sms_code(mobile, sms_code):
"""
发送短信任务
:param mobile:
:param sms_code:
:return:
"""
ccp= CCP()
time = str(constants.SMS_CODE_REDIS_EXPIRES / 60)
ccp.send_template_sms(mobile, [sms_code, time], constants.SMS_CODE_TEMP_ID)
在verifications/views.py中改写SMSCodeView视图,使用celery异步任务发送短信
class SMSCodeView