Django实战项目-学习任务系统-发送短信通知

news/2025/2/12 13:49:21/

接着上期代码内容,继续完善优化系统功能。

本次增加发送短信通知功能,学习任务系统发布的任务,为了更加及时通知到学生用户,再原有发送邮件通知基础上,再加上手机短信通知功能。

第一步:开通短信通知服务

目前短信通知都是要收费的,本人还没发现免费的短信通知服务,如有网友知道免费资源请分享下。

本人选用的是腾讯云的短信通知服务,一年1千条短信40多元。其他还有阿里云,华为云等等。自己选择实惠好用的平台服务。

1,创建短信签名

创建短信签名这步,目前比较严格了,前提条件,需要实名认证的网站,APP,公众号,小程序等,普通个人开发者要申请下来流程比较繁琐,具体的就不详说了,自己网上查询教程,不是本次重点。

 2,创建正文模板

注意按照平台模板格式设置短信内容模板,腾讯云短信模板参数,是按照参数顺序1,2,3等数字来设置的。

 3,等待审核

短信签名和模板提交申请,都要审核,一般10分钟左右,审核不通过,可以修改重新提交申请。

 4,发送短信

短信签名和模板都审批通过了,就可以发送短信,简单测试下效果,平台有验证方式。

国内短信快速入门,参考官方教程:
https://cloud.tencent.com/document/product/382/37745

第二步:编写短信通知代码

腾讯云官网短信调用方式有2种:API和SDK方式,不过都不太好用,网上找了一个开源的腾讯短信调用库比较好用。

qcloudsms_py是一个基于Python的,使用腾讯云短信服务的开源库。

1. 安装
在终端中执行以下命令,可以使用 pip 安装 qcloudsms_py:

pip install qcloudsms_py

2. 导入
将 qcloudsms_py 导入项目中:

from qcloudsms_py import SmsSingleSender, SmsMultiSender

3. 发送单条短信

使用 SmsSingleSender 类可以发送单条短信。以下是一个示例代码:

from qcloudsms_py import SmsSingleSender
from qcloudsms_py.httpclient import HTTPError# 短信应用 SDK AppID
appid = 1412345679  # SDK AppID 以1400开头
# 短信应用 SDK AppKey
appkey = "******************"
# 需要发送短信的手机号码
phone_number = "12345678901"
# 短信模板 ID,需要在短信应用中申请
template_id = 1234  # NOTE: 这里使用的模板 ID 必须已经审核通过
# 短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名
sms_sign = "腾讯云"try:ssender = SmsSingleSender(appid, appkey)# 指定模板单发result = ssender.send_with_param(phone_number, template_id, ["123456"], sign=sms_sign)print(result)except HTTPError as e:print(e)except Exception as e:print(e)

第三步:短信通知整合到学习系统中

1,编写短信发送工具方法

./mysite/study_system/smsutil.py

# 更多代码内容请关注weixin公众号: PandaCode辉

2,更新定时任务实现方法

 ./mysite/study_system/utils.py:

# 更多代码内容请关注weixin公众号: PandaCode辉

第四步:运行测试效果

1,定时发布学习任务

 -------------------------------------------------end -------------------------------------------------


http://www.ppmy.cn/news/1202040.html

相关文章

【后端速成 Vue】初识指令(下)

前言: 上一篇初识指令(上)文章中,一共讲解了 v-html,v-show,v-if,v-else,v-else-if,v-on,v-bind 这些指令,当然,还剩不少的指令没有讲解,本问将会…

【ARFoundation学习笔记】射线检测

写在前面的话 本系列笔记旨在记录作者在学习Unity中的AR开发过程中需要记录的问题和知识点。难免出现纰漏,更多详细内容请阅读原文以及官方文档。 文章目录 射线检测射线检测概念 小结 射线检测 射线检测是Unity中常见的一种物理检测方法,具体就不赘述…

AD教程 (八)器件的复制和对齐

AD教程 (八)器件的复制和对齐 设置原理图工作区域 设置Sheet Size,将A4改为A3,增大原理图区域 按照原理图布局大致排布元件 框选需要复制的元件,按住Shift即可复制元件并拖动到合适的位置。如果元件需要对齐&#xf…

【带头学C++】----- 三、指针章 ---- 3.7 数组指针-3.8二维数组与数组指针的关系

3.7 数组指针 在C中,数组指针是指向数组的指针。可以使用指针来操作数组,例如访问数组元素或传递数组到函数。在C中,数组名实际上是一个指向数组第一个元素的指针。 下面是一些有关数组指针的重要概念: 定义数组指针&#xf…

使用Ruby编写通用爬虫程序

目录 一、引言 二、环境准备 三、爬虫程序设计 1. 抓取网页内容 2. 解析HTML内容 3. 提取特定信息 4. 数据存储 四、优化和扩展 五、结语 一、引言 网络爬虫是一种自动抓取互联网信息的程序。它们按照一定的规则和算法,遍历网页并提取所需的信息。使用Rub…

lightdb 普通用户拥有XMLTYPE类型的访问权限

文章目录 概述示例总结 概述 在信创移植的SQL语句中,有来源于Oracle数据库的SQL语句。 在Oracle中存在getClobVal函数,这个函数是Oracle中sys.XMLType的成员方法。 因此在LightDB23.3版本中实现了TYPE支持定义成员方法并且在新定义的XMLType类型中实现…

range-doppler图中间有一条线,是静态分量??这个静态分量,怎么理解

回复1: 在Range-Doppler图中,中间的一条线通常表示静态分量,也就是雷达自身或者静止目标的回波。这是因为雷达的工作原理是通过发送电磁波并接收其反射回波来检测目标。当目标相对于雷达静止或者雷达自身产生的回波时,由于没有相…

Web3.0的测试题

任务: 在前端开发一个查询UI,查询当前用户账户的ETH余额和指定ERC20合约中的余额 目标: UI框架指定使用 MUI (https://mui.com)需要查询到当前账户的ETH余额并展示在UI界面上需要输入ERC20合约地址后,查询到到当前账户在此ERC20…