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用法实例
Jan 23 Python
浅谈MySQL中的触发器
May 05 Python
Python实现从URL地址提取文件名的方法
May 15 Python
Python脚本文件打包成可执行文件的方法
Jun 02 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
pandas 空的dataframe 插入列名的示例
Oct 30 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
python 回溯法模板详解
Feb 26 Python
什么是python的函数体
Jun 19 Python
python 如何在 Matplotlib 中绘制垂直线
Apr 02 Python
Python访问Redis的详细操作
Jun 26 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学习资料汇总与网址
2007/03/16 PHP
PHP校验ISBN码的函数代码
2011/01/17 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
php支付宝接口用法分析
2015/01/04 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
Yii框架实现对数据库的CURD操作示例
2019/09/03 PHP
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
Python制作刷网页流量工具
2017/04/23 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
python实现决策树分类算法
2017/12/21 Python
Python装饰器知识点补充
2018/05/28 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
python将数组n等分的实例
2019/12/02 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
校园活动策划方案
2014/06/13 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
交通安全学习心得体会
2016/01/18 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js