目录
由于上面那个原因,在做微信开发的时候若是启用了服务器配置,原本在微信后台设置的自动回复和自定义菜单将会失效。为解决这个问题,这里将会讲django实现微信自定义菜单功能
实现的效果图
近来在用python写微信的自定义菜单,先看效果截图如下:
# 图1:django的后台管理系统之自定义菜单
(相关代码实现见下文)
# 图2:django的后台管理系统之新增自定义菜单
(相关代码实现见下文)
# 图3:在公众号上的实现效果
OK,大概效果是长上面那亚子。接下来讲讲代码实现部分。
一、先看看我们需要做什么
1、看微信的文档
我们需要做微信自定义菜单,效果图是上面那些截图的样子。
先查看微信的开发文档,把菜单转换为微信所需要的格式长这样子:
2、用到的工具 wechatpy
用的wechatpy:一个微信 (WeChat) 的第三方 Python SDK, 实现了微信公众号、企业微信和微信支付等 API。
安装按照文档的要求来吧,安装在这里不说。直接拉到自定义菜单那边看看:wechatpy的自定义菜单
要的其实主要是create()和删除delete()
wechatpy/client/api/menu.py 工具类长这个亚子:
(不用自己写的!是wechatpy提供的!就看看它长啥样就好了,看看能怎么用它)
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from wechatpy.exceptions import WeChatClientException
from wechatpy.client.api.base import BaseWeChatAPI
class WeChatMenu(BaseWeChatAPI):
def get(self):
"""
查询自定义菜单。
详情请参考
http://mp.weixin.qq.com/wiki/16/ff9b7b85220e1396ffa16794a9d95adc.html
:return: 返回的 JSON 数据包
使用示例::
from wechatpy import WeChatClient
client = WeChatClient('appid', 'secret')
menu = client.menu.get()
"""
try:
return self._get('menu/get')
except WeChatClientException as e:
if e.errcode == 46003:
# menu not exist
return None
else:
raise e
def create(self, menu_data):
"""
创建自定义菜单 ::
from wechatpy import WeChatClient
client = WeChatClient("appid", "secret")
client.menu.create({
"button":[
{
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
},
{
"type":"click",
"name":"歌手简介",
"key":"V1001_TODAY_SINGER"
},
{
"name":"菜单",
"sub_button":[
{
"type":"view",
"name":"搜索",
"url":"http://www.soso.com/"
},
{
"type":"view",
"name":"视频",
"url":"http://v.qq.com/"
},
{
"type":"click",
"name":"赞一下我们",
"key":"V1001_GOOD"
}
]
}
]
})
详情请参考
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013
:param menu_data: Python 字典
:return: 返回的 JSON 数