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中利用sqrt()方法进行平方根计算的教程
May 15 Python
Python实现简单的多任务mysql转xml的方法
Feb 08 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
Feb 08 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
Jan 14 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
pandas实现将dataframe满足某一条件的值选出
Jun 12 Python
python+openCV调用摄像头拍摄和处理图片的实现
Aug 06 Python
利用python实现汉字转拼音的2种方法
Aug 12 Python
在Django下创建项目以及设置settings.py教程
Dec 03 Python
python实现交并比IOU教程
Apr 16 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
PyCharm 配置SSH和SFTP连接远程服务器
May 11 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比较多维数组中值的大小排序实现代码
2012/09/08 PHP
destoon数据库表说明汇总
2014/07/15 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
详解vue-cli3使用
2018/08/14 Javascript
js防抖和节流的深入讲解
2018/12/06 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
解读Python中degrees()方法的使用
2015/05/18 Python
全面解析Python的While循环语句的使用方法
2015/10/13 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
大型公益活动策划方案
2014/08/20 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
Python import模块的缓存问题解决方案
2021/06/02 Python
Python实现滑雪小游戏
2021/09/25 Python