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避免死锁方法实例分析
Jun 04 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
Python hexstring-list-str之间的转换方法
Jun 12 Python
python elasticsearch从创建索引到写入数据的全过程
Aug 04 Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 Python
解决python 文本过滤和清理问题
Aug 28 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
Sep 30 Python
python selenium循环登陆网站的实现
Nov 04 Python
解析python 类方法、对象方法、静态方法
Aug 15 Python
使用python把xmind转换成excel测试用例的实现代码
Oct 12 Python
Python的collections模块真的很好用
Mar 01 Python
Python绘制分类图的方法
Apr 20 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
php 无限级 SelectTree 类
2009/05/19 PHP
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
JS中的异常处理方法分享
2013/12/22 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
jQuery知识点整理
2015/01/30 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
Python的print用法示例
2014/02/11 Python
Python检测网络延迟的代码
2018/05/15 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
python 变量初始化空列表的例子
2019/11/28 Python
keras:model.compile损失函数的用法
2020/07/01 Python
python判断是空的实例分享
2020/07/06 Python
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
留学推荐信中文范文三篇
2014/01/25 职场文书
人民教师求职自荐信
2014/03/12 职场文书
信息合作协议书
2014/10/09 职场文书
幼儿园心得体会范文
2016/01/21 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
SpringBoot快速入门详解
2021/07/21 Java/Android
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle