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发送邮件实例讲解(python发邮件附件可以使用email模块实现)
Dec 03 Python
Django中对数据查询结果进行排序的方法
Jul 17 Python
解决win64 Python下安装PIL出错问题(图解)
Sep 03 Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 Python
Django如何防止定时任务并发浅析
May 14 Python
python支付宝支付示例详解
Aug 22 Python
python 有效的括号的实现代码示例
Nov 11 Python
Python random模块制作简易的四位数验证码
Feb 01 Python
python 实现多维数组(array)排序
Feb 28 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
Python可视化学习之seaborn调色盘
Feb 24 Python
利用Python多线程实现图片下载器
Mar 25 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
mouse_on_title.js
2006/08/25 Javascript
javascript网页关键字高亮代码
2008/07/30 Javascript
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
为EasyUI的Tab标签添加右键菜单的方法
2012/07/14 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
iscroll实现下拉刷新功能
2017/07/18 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
Python及Django框架生成二维码的方法分析
2018/01/31 Python
python抽取指定url页面的title方法
2018/05/11 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
英国网上花店:Bunches
2016/11/29 全球购物
自荐信格式范文
2013/10/07 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
开学第一天的感想
2015/08/10 职场文书