django之注册会员发送短信验证码的业务

现在注册会员要么就是邮箱激活,要么就是发送短信验证码
邮箱很简单,在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的文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值