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常用模块用法分析
Sep 08 Python
Python中使用items()方法返回字典元素对的教程
May 21 Python
Python制作简单的网页爬虫
Nov 22 Python
python实现xlsx文件分析详解
Jan 02 Python
Python输入二维数组方法
Apr 13 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
python过滤中英文标点符号的实例代码
Jul 15 Python
opencv导入头文件时报错#include的解决方法
Jul 31 Python
使用python模拟命令行终端的示例
Aug 13 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
用python发送微信消息
Dec 21 Python
Python几种酷炫的进度条的方式
Apr 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
社区(php&&mysql)五
2006/10/09 PHP
通俗易懂的php防注入代码
2010/04/07 PHP
php简单实现快速排序的方法
2015/04/04 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
学习ExtJS accordion布局
2009/10/08 Javascript
20款超赞的jQuery插件 Web开发人员必备
2011/02/26 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
2016/05/09 Javascript
微信小程序 实例开发总结
2017/04/26 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
浅谈python可视化包Bokeh
2018/02/07 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
企划经理的岗位职责
2013/11/17 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
路政管理求职信
2014/06/18 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
招商引资工作汇报
2014/10/28 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers