小編給大家分享一下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發送模板消息
我們首先在微信公眾平臺中創建模板消息

然后把模板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后端發送小程序微信模板消息的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。