现在注册会员要么就是邮箱激活,要么就是发送短信验证码
邮箱很简单,在163或者qq邮箱开启smtp服务器,然后使用django内置的smtp模块,配置一些邮箱参数,加入celery异步任务发送邮件就行了,今天这篇文章主要讲一下短信验证码服务
我们采用阿里云短信服务
进入到aliyun短信服务页面
直接用支付宝账号登录
登录后在鼠标悬停在头像这里,里面有个accesskeys的功能,点进去就可以进入如上的界面,生成accesskey
然后在创建你自己的签名以及模板,按里面的要求创建就行,然后等待他们审核通过,一般要几个小时的时间
在帮助文档中找到python的API文档
下载SDK文件
下载python版本的,下载好之后解压
将这个文件放到你环境的site_packages中
然后执行pip setup.py install安装
把这两个文件放入项目中
demo_sms_send我改名成了aliyunsms.py
然后优化一下demo的代码
import json
from .aliyunsdkdysmsapi.request.v20170525 import SendSmsRequest
from .aliyunsdkdysmsapi.request.v20170525 import QuerySendDetailsRequest
from aliyunsdkcore.client import AcsClient
import uuid
from aliyunsdkcore.profile import region_provider
from aliyunsdkcore.http import method_type as MT
from aliyunsdkcore.http import format_type as FT
# try:
# reload(sys)
# sys.setdefaultencoding('utf8')
# except NameError:
# pass
# except Exception as err:
# raise err
# 注意:不要更改
REGION = "cn-hangzhou"
PRODUCT_NAME = "Dysmsapi"
DOMAIN = "dysmsapi.aliyuncs.com"
ACCESS_KEY_ID = 'LTAI4**********yp5ZVe'
ACCESS_KEY_SECRET = 'zBme1B1************mYYd062'
acs_client = AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION)
region_provider.add_endpoint(PRODUCT_NAME, REGION, DOMAIN)
def send_sms(phone_numbers,code):
business_id = uuid.uuid1()
sign_name = "Kevin个人网站"
template_code = 'SMS_174725054'
template_param = json.dumps({"code":code})
smsRequest = SendSmsRequest.SendSmsRequest()
# 申请的短信模板编码,必填
smsRequest.set_TemplateCode(template_code)
# 短信模板变量参数
if template_param is not None:
smsRequest.set_TemplateParam(template_param)
# 设置业务请求流水号,必填。
smsRequest.set_OutId(business_id)
# 短信签名
smsRequest.set_SignName(sign_name)
# 数据提交方式
# smsRequest.set_method(MT.POST)
# 数据提交格式
# smsRequest.set_accept_format(FT.JSON)
# 短信发送的号码列表,必填。
smsRequest.set_PhoneNumbers(phone_numbers)
# 调用短信发送接口,返回json
smsResponse = acs_client.do_action_with_exception(smsRequest)
# TODO 业务处理
return smsResponse
我把其他的参数都写死了,只留了电话和验证码两个参数
然后可以放入视图中调用
def mess(request):
result = send_sms('185******11','3231')
print(result)
return HttpResponse('ok')
结果:
手机收到验证码,记得你们实验的时候充几块钱,不然发送不成功
python短信接口API文档
我这里只是实现了一个简单的demo,参数都在文档中,大家可以点击看看。
我们其实还可以将发送短信的这个函数注册为celery的异步任务,然后delay调用,不会的可以查看我的其他关于celery的文章