环境:
python 3.9
python sdk3.0
反对的 python 环境
后期筹备:
创立短信签名、短信模板、利用,就不赘述了,官网有指引,一步步依照提醒操作即可;
sdk3.0 校验应用的是密钥对,所以还须要创立一个密钥对 ( https://console.cloud.tencent…)
配置如下:
其实官网曾经给出了配置步骤,因为是测试应用,也就没有过多的配置,把一些必要的配置上,非必要的间接不要了;自己也是刚应用短信验证码的 sdk,理解的并不深刻,目前用的是 python sdk,请各位大佬多多指教;
写成模块模式,简略应用的,也能够间接单页面去写
短信发送模块 tx_sms/send.py:
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.sms.v20210111 import sms_client, models
from . import settings
import json
import random
# 获取四位随机验证码
def get_code():
s_code = ''
for i in range(4):
s_code += str(random.randint(0,9))
return s_code
# 发送短信,腾讯短信验证码 sdk 3.0
def send_message(telephone, code):
try:
telephone = f'+86{telephone}'
# 实例化认证对象,传入腾讯云账户密钥对
cred = credential.Credential(settings.secretId,
settings.secretKey)
# 第二个参数是地区信息,能够间接填写字符串 ap-guangzhou,反对的地区列表参考 https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8
client = sms_client.SmsClient(cred, "ap-guangzhou")
# 实例化一个申请对象,依据调用的接口和理论状况,能够进一步设置申请参数
req = models.SendSmsRequest()
params = {"PhoneNumberSet": [telephone,], # 下发手机号码,采纳 E.164 规范,+[国家或地区码][手机号]
"SmsSdkAppId" : settings.appid, # 短信利用 ID
"SignName" : settings.sms_sign, # 短信签名内容
"TemplateId" : settings.template_id, # 模板 ID
"TemplateParamSet" : [code, settings.Exp_interval], # 模板参数
}
req.from_json_string(json.dumps(params))
resp = client.SendSms(req)
# 输入 json 格局的字符串回包
print(resp.to_json_string(indent=2))
if resp:
return True
else:
return False
except TencentCloudSDKException as err:
print(err) # 这里的异样捕捉解决,逻辑能够本人按需写
短信配置,tx_sms/settings.py
# 密钥对
secretId = "粘贴本人的"
secretKey = "粘贴本人的"
# 短信利用 SDK AppID
appid = "粘贴本人的" # SDK AppID 以 1400 结尾
# 验证码生效工夫距离
Exp_interval = "3" # 示意三分钟内无效
# 短信模板 ID,须要在短信控制台中申请
template_id = "粘贴本人的" # NOTE: 这里的模板 ID`7839` 只是示例,实在的模板 ID 须要在短信控制台中申请
# 签名
sms_sign = "粘贴本人的" # NOTE: 签名参数应用的是 ` 签名内容 `,而不是 ` 签名 ID`。这里的签名 "腾讯云" 只是示例,实在的签名须要在短信控制台中申请
接下来就是调用 get_code、send_message 两个函数来进行发送验证码,我这里用的是 drf 框架,只是用来测试 sdk 的配置,轻易用 python 写一个函数也行
views.py
# 发送验证码
from rest_framework.viewsets import ViewSet
class SendCodeView(ViewSet):
# 发送验证码
@action(methods=['GET'], detail= False)
def send_code(self, request, *args, **kwargs):
telephone = request.query_params.get('telephone')
code = get_code()
result = send_message(telephone, code)
if result:
return APIResponse(code= 1, msg= '验证码发送胜利')
else:
return APIResponse(code= 0, msg= '验证码发送失败')
配置一下路由 urls.py
from django.urls import path, re_path, include
from apps.user import views
from rest_framework.routers import SimpleRouter
router = SimpleRouter()
router.register('', views.SendCodeView,'send_code')
urlpatterns = [path('', include(router.urls)),
]
最初就是去调用本人写的接口,发送验证码了
以上就是本次分享的全部内容,当初想要学习编程的小伙伴欢送关注 Python 技术大本营,获取更多技能与教程。