Django后端发送小程序微信模板消息示例(服务通知)


Posted in Python onDecember 17, 2019

模板消息

官方文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/template-message/templateMessage.send.html

模板消息如下图所示

Django后端发送小程序微信模板消息示例(服务通知)

Django中获取access_token

根据文档描述,获取access_token文档,后端必须获取一个access_token才能够发送模板消息,文档中说明该token有效期为两小时,需要后端定时去获取。我们这里使用Django-crontab第三方包来实现定时任务。

pip install django-crontab

根据文档描述,需要向https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET这个地址发送get请求,返回结果为access_token

我把access_token存入到缓存中

Python代码如下:

response = requests.get(f'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={settings.APPID}&secret={settings.APPSECRET}')
response = response.json()
if response.get('access_token', ''):
 cache.set('access_token', response['access_token'])
 cache.expire('access_token', response['expires_in'])

在settings.py中配置:

CRONJOBS = (
 #每隔7200秒都生成一次access——token
 ('0 */2 * * *', 'django.core.management.call_command', ['runstat', '--token']),
)

这样就实现了每隔两小时自动获取token

Django发送模板消息

我们首先在微信公众平台中创建模板消息

Django后端发送小程序微信模板消息示例(服务通知)

然后把模板ID复制到项目中,编写视图函数。

@require_http_methods(["POST"])
@csrf_exempt
def notifications(request):
 if request.method == 'POST':
  access_token = cache.get('access_token')

  template_id = '你的模板id'
  push_data = {
   "keyword1": {
    "value": obj.order_sn
   },
   "keyword2": {
    "value": obj.time
   },
   "keyword3": {
    "value": "{:.2f}".format(float(obj.total_price))
   },
  }

  if access_token:
   # 如果存在accesstoken
   payload = {
    'touser': req_data.get('openid', ''), #这里为用户的openid
    'template_id': template_id, #模板id
    'form_id': req_data.get('form_id', ''), #表单id或者prepay_id
    'data': push_data #模板填充的数据
   }

   response = requests.post(f'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token={access_token}',
       json=payload)

   #直接返回res结果
   return JsonResponse(response.json())
  else:
   return JsonResponse({
    'err': 'access_token missing'
   })

配置urls.py

#模板消息通知
path('api/v1/notifications/', notifications),

用户向notifications这个接口发送post请求后即可推送模板消息到微信中!!

以上这篇Django后端发送小程序微信模板消息示例(服务通知)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python常见文件操作的函数示例代码
Nov 15 Python
python模块之StringIO使用示例
Apr 08 Python
python实现监控某个服务 服务崩溃即发送邮件报告
Jun 21 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
Jul 23 Python
python命名空间(namespace)简单介绍
Aug 10 Python
Python: 传递列表副本方式
Dec 19 Python
完美解决pycharm导入自己写的py文件爆红问题
Feb 12 Python
Python实现手势识别
Oct 21 Python
Python解析微信dat文件的方法
Nov 30 Python
Python+unittest+requests+excel实现接口自动化测试框架
Dec 23 Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 Python
Python jiaba库的使用详解
Nov 23 Python
Django项目使用ckeditor详解(不使用admin)
Dec 17 #Python
python主线程与子线程的结束顺序实例解析
Dec 17 #Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 #Python
Django集成celery发送异步邮件实例
Dec 17 #Python
python学生信息管理系统实现代码
Dec 17 #Python
pymysql模块的操作实例
Dec 17 #Python
Django异步任务线程池实现原理
Dec 17 #Python
You might like
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
js function定义函数的几种不错方法
2014/02/27 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
javascript操作符"!~"详解
2015/02/10 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
浅谈JS之iframe中的窗口
2016/09/13 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
2020/07/22 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
Python类属性的延迟计算
2016/10/22 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
PyQt5使用QTimer实现电子时钟
2019/07/29 Python
python匿名函数用法实例分析
2019/08/03 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
世界经理人咨询有限公司面试
2014/09/23 面试题
项目专员岗位职责
2013/12/04 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
yy婚礼主持词
2014/03/14 职场文书
教师节活动总结
2014/08/29 职场文书
单位工作证明范文
2014/09/14 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
公司职员入党自传书
2015/06/26 职场文书