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 fabric实现远程操作和部署示例
Mar 25 Python
Python实现队列的方法
May 26 Python
浅谈python中的面向对象和类的基本语法
Jun 13 Python
基于python的字节编译详解
Sep 20 Python
Python实现的破解字符串找茬游戏算法示例
Sep 25 Python
Python datetime和unix时间戳之间相互转换的讲解
Apr 01 Python
python求最大值最小值方法总结
Jun 25 Python
python如何实现单链表的反转
Feb 10 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
django序列化时使用外键的真实值操作
Jul 15 Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 Python
如何用Django处理gzip数据流
Jan 29 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
input file获得文件根目录简单实现
2013/04/26 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
JavaScript 私有成员分析
2009/01/13 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
2016/05/28 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
vue axios 二次封装的示例代码
2017/12/08 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
Python线程详解
2015/06/24 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
Python数据可视化正态分布简单分析及实现代码
2017/12/04 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
Python元组常见操作示例
2019/02/19 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
校长就职演讲稿
2014/01/06 职场文书
上班玩手机检讨书
2014/02/17 职场文书
总账会计岗位职责
2014/03/13 职场文书
2014年团工作总结
2014/11/27 职场文书
男方婚礼答谢词
2015/01/20 职场文书
社区活动总结范文
2015/05/07 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
被委托人身份证明
2015/08/07 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
高一作文之乐趣
2019/11/21 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js