python之tx_SDK 3.0短信验证码sdk配置使用(pythOn)

网友投稿 353 2022-09-06


python之tx_SDK 3.0短信验证码sdk配置使用(pythOn)

环境:

python 3.9

python sdk3.0

支持的python环境

前期准备:

创建短信签名、短信模板、应用,就不赘述了,官网有指引,一步步按照提示操作即可;

sdk3.0校验使用的是密钥对,所以还需要创建一个密钥对(​​ sdk,请各位大佬多多指教;

写成模块形式,简单使用的,也可以直接单页面去写

短信发送模块tx_sms/send.py:

from tencentcloud.common import credentialfrom tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKExceptionfrom tencentcloud.sms.v20210111 import sms_client, modelsfrom . import settingsimport jsonimport random# 获取四位随机验证码def get_code(): s_code = '' for i in range(4): s_code += str(random.randint(0,9)) return s_code# 发送短信 ,腾讯短信验证码sdk 3.0def send_message(telephone, code): try: telephone = f'+86{telephone}' # 实例化认证对象,传入腾讯云账户密钥对 cred = credential.Credential(settings.secretId, settings.secretKey) # 第二个参数是地域信息,可以直接填写字符串ap-guangzhou,支持的地域列表参考 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 AppIDappid = "粘贴自己的" # 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 ViewSetclass 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, includefrom apps.user import viewsfrom rest_framework.routers import SimpleRouterrouter = SimpleRouter()router.register('', views.SendCodeView, 'send_code')urlpatterns = [ path('', include(router.urls)),]

最后就是去调用自己写的接口,发送验证码了


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:django 清理migrations(pymysql.err.ProgrammingError: 1146 )(django框架主要用来做什么)
下一篇:百科人物爬虫-属性解析(爬虫百度百科内容)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~