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中的切片赋值
May 08 Python
Django1.9 加载通过ImageField上传的图片方法
May 25 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
Django 中间键和上下文处理器的使用
Mar 17 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 Python
python3实现绘制二维点图
Dec 04 Python
全网首秀之Pycharm十大实用技巧(推荐)
Apr 27 Python
python使用多线程+socket实现端口扫描
May 28 Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 Python
Python timeit模块原理及使用方法
Oct 10 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的new static和new self的区别与使用
2019/11/27 PHP
调试代码导致IE出错的避免方法
2014/04/04 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
Python多线程编程(一):threading模块综述
2015/04/05 Python
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
全面理解Python中self的用法
2016/06/04 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
python逆向入门教程
2018/01/15 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
python pillow模块使用方法详解
2019/08/30 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
python+requests实现接口测试的完整步骤
2020/10/27 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
环境科学专业个人求职信
2013/09/26 职场文书
计算机专业大学生的自我评价
2013/11/14 职场文书
业务员岗位职责范本
2013/12/15 职场文书
二年级体育教学反思
2014/01/15 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
销售类求职信
2014/06/13 职场文书
受伤赔偿协议书
2014/09/24 职场文书
七年级作文之雪景
2019/11/18 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
Python内置数据类型中的集合详解
2022/03/18 Python