个人模块开发
功能概览:
- 用户数据模型设计
- 手机注册
- 短信验证码登录
- 获取个人资料
- 修改个人资料
- 头像上传
在user文件夹下创建api.py,先写一些占位函数:
def get_verify_code(request):
"""手机注册"""
phonenum = request.GET.get('phonenum')
def login(request):
"""短信验证码登录"""
pass
def get_profile(request):
"""获取个人资料"""
pass
def modify_profile(request):
"""修改个人资料"""
pass
def upload_avatar(request):
"""头像上传"""
pass
然后找个发送短信的平台,注册充值,查看调用文档:
例如:https://www.ihuyi.com/api/sms.html
互亿无线的短信:
请求网址:
https://106.ihuyi.com/webservice/sms.php?method=Submit
请求参数:
参数名称 参数值描述 必填
account APIID(用户中心【验证码通知短信】-【产品纵览】查看) 是
password 1、APIKEY(用户中心【验证码通知短信】-【产品纵览】查看)
2、动态密码(生成动态密码方式请看该文档末尾的说明) 是
mobile 接收手机号码,只能提交1个号码 是
content 短信内容(编码格式为 UTF-8,支持 300 个字的长短信,长短信 按多条计费)
例如:您的验证码是:1234。请不要把验证码泄露给其他人。 是
time Unix时间戳(10位整型数字,当使用动态密码方式时为必填) 否
format 返回格式(可选值为:xml或json,系统默认为xml) 否
在主项目下创建文件config.py,然后输入代码:
"""
第三方配置
"""
"""互亿无限短信配置"""
HY_SMS_URL = 'https://106.ihuyi.com/webservice/sms.php?method=Submit'
HY_SMS_PARAMS = {
'account': 'C9254XXXX',
'password': 'b2ce23ae838ea7XXXXXX',
'content': '您好,您的验证码是:%s。请不要把验证码泄露给其他人。',
'mobile': None,
'format': 'json',
}
这里XXX的内容需要自己根据自己账号查看。
这里这用到了采用https协议和MD5加密的知识。
安装第三方库“requests”
pip install requests
在user文件夹下创建logic.py,写下面代码:
"""逻辑写在这里"""
import random
import requests
from spiter.spiter import config # 引用的时候标准库最上面,第三方库中间,个人的库写在最下面。
from worker import call_by_worker
def gen_verify_code(length=6):
"""产生一个验证码"""
return random.randrange(10 ** (length - 1), 10 ** length)
# 10的5次方(100000)到10的6次方(1000000)之间就是6位数验证码
@call_by_worker
def send_verify_code(phonenum):
vcode = gen_verify_code()
sms_cfg = config.HY_SMS_PARAMS.copy() # 使用浅拷贝,字典 使用d.copy()
sms_cfg['content'] = sms_cfg['content'] % vcode
sms_cfg['mobile'] = phonenum
response = requests.post(config.HY_SMS_URL, data=config.sms_cfg)
return response