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基础之函数用法实例详解
Sep 10 Python
Python3访问并下载网页内容的方法
Jul 28 Python
Python实现获取命令行输出结果的方法
Jun 10 Python
LRUCache的实现原理及利用python实现的方法
Nov 21 Python
Python数据分析库pandas基本操作方法
Apr 08 Python
pandas object格式转float64格式的方法
Apr 10 Python
python实现可视化动态CPU性能监控
Jun 21 Python
python使用tornado实现简单爬虫
Jul 28 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
Aug 17 Python
Python中的list与tuple集合区别解析
Oct 12 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
Nov 24 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+MYSQL开发工具及资源收藏
2007/01/02 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
Python MySQLdb Linux下安装笔记
2015/05/09 Python
对python中的argv和argc使用详解
2018/12/15 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
python groupby 函数 as_index详解
2019/12/16 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
PHP面试题集
2016/12/18 面试题
农村党支部先进事迹
2014/01/14 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
财产分割协议书范本
2014/11/03 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题