Django后端發(fā)送小程序微信模板消息示例(服務(wù)通知)
模板消息
模板消息如下圖所示

Django中獲取access_token
根據(jù)文檔描述,獲取access_token文檔,后端必須獲取一個(gè)access_token才能夠發(fā)送模板消息,文檔中說明該token有效期為兩小時(shí),需要后端定時(shí)去獲取。我們這里使用Django-crontab第三方包來實(shí)現(xiàn)定時(shí)任務(wù)。
pip install django-crontab
根據(jù)文檔描述,需要向https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET這個(gè)地址發(fā)送get請(qǐng)求,返回結(jié)果為access_token
我把a(bǔ)ccess_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']),
)
這樣就實(shí)現(xiàn)了每隔兩小時(shí)自動(dòng)獲取token
Django發(fā)送模板消息
我們首先在微信公眾平臺(tái)中創(chuàng)建模板消息

然后把模板ID復(fù)制到項(xiàng)目中,編寫視圖函數(shù)。
@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 #模板填充的數(shù)據(jù)
}
response = requests.post(f'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token={access_token}',
json=payload)
#直接返回res結(jié)果
return JsonResponse(response.json())
else:
return JsonResponse({
'err': 'access_token missing'
})
配置urls.py
#模板消息通知
path('api/v1/notifications/', notifications),
用戶向notifications這個(gè)接口發(fā)送post請(qǐng)求后即可推送模板消息到微信中??!
以上這篇Django后端發(fā)送小程序微信模板消息示例(服務(wù)通知)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
一文詳解Python中的Map,Filter和Reduce函數(shù)
這篇文章主要介紹了一文詳解Python中的Map,Filter和Reduce函數(shù),本文重點(diǎn)介紹Python中的三個(gè)特殊函數(shù)Map,Filter和Reduce,以及如何使用它們進(jìn)行代碼編程2022-08-08
python中cv2.imread()和Image.open()的區(qū)別和聯(lián)系詳解
image.open和cv2.imread都是Python中用于讀取圖像文件的函數(shù),但是它們之間有一些區(qū)別,這篇文章主要給大家介紹了關(guān)于python中cv2.imread()和Image.open()的區(qū)別和聯(lián)系,需要的朋友可以參考下2024-07-07
Python+tkinter使用40行代碼實(shí)現(xiàn)計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了Python+tkinter使用40行代碼實(shí)現(xiàn)計(jì)算器功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的完整代碼(面向?qū)ο?
這篇文章主要介紹了Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)的完整代碼(面向?qū)ο?,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
python GUI庫(kù)圖形界面開發(fā)之PyQt5輸入對(duì)話框QInputDialog詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開發(fā)之PyQt5輸入對(duì)話框QInputDialog詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-02-02
python進(jìn)程管理工具supervisor的安裝與使用教程
supervisor是用python寫的一個(gè)進(jìn)程管理工具,用來啟動(dòng),重啟,關(guān)閉進(jìn)程。下面這篇文章主要給大家介紹了關(guān)于python實(shí)現(xiàn)的進(jìn)程管理工具supervisor的安裝與使用的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09
Python中內(nèi)置的數(shù)據(jù)結(jié)構(gòu)類型詳解(內(nèi)置數(shù)據(jù)容器)
在?Python?中,字典(dict)是一種非常常用的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)鍵值對(duì),這篇文章給大家介紹Python中內(nèi)置的數(shù)據(jù)結(jié)構(gòu)類型詳解(內(nèi)置數(shù)據(jù)容器),感興趣的朋友一起看看吧2025-04-04
pycharm配置SSH遠(yuǎn)程連接服務(wù)器詳細(xì)步驟(0基礎(chǔ)詳細(xì)版)
PyCharm是一款流行的Python集成開發(fā)環(huán)境(IDE),提供了遠(yuǎn)程連接云服務(wù)器的功能,使得開發(fā)者可以更加便捷地進(jìn)行遠(yuǎn)程開發(fā)和調(diào)試,這篇文章主要給大家介紹了關(guān)于pycharm配置SSH遠(yuǎn)程連接服務(wù)器的詳細(xì)步驟,需要的朋友可以參考下2024-07-07

