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字典基本操作实例分析
Jul 11 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
在windows下使用python进行串口通讯的方法
Jul 02 Python
python3字符串操作总结
Jul 24 Python
Django REST framework内置路由用法
Jul 26 Python
PyQt5多线程刷新界面防假死示例
Dec 13 Python
pytorch数据预处理错误的解决
Feb 20 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
Apr 26 Python
Python中logger日志模块详解
Aug 04 Python
Python本地及虚拟解释器配置过程解析
Oct 13 Python
Python 实现一个简单的web服务器
Jan 03 Python
Python实现文本文件拆分写入到多个文本文件的方法
Apr 18 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文件上传类
2015/10/29 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
浅析PHP开发规范
2018/02/05 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
jQuery读取和设定KindEditor值的方法
2013/11/22 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
python线程池的实现实例
2013/11/18 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
为什么称python为胶水语言
2020/06/16 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
学生自我鉴定范文
2013/10/04 职场文书
会计自荐书
2013/12/02 职场文书
单位刻章介绍信范文
2014/01/11 职场文书
机电专业大学生职业规划书范文
2014/02/25 职场文书
媒体宣传策划方案
2014/05/25 职场文书
求职信标题怎么写
2014/05/26 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
Python制作动态字符画的源码
2021/08/04 Python