Code前端首页关于Code前端联系我们

Django开发微信公众号的自定义菜单

terry 2年前 (2023-09-24) 阅读数 63 #后端开发

自定义菜单可以帮助公众号丰富界面,让用户更好更快地了解公众号的功能。

Django开发微信公众号之自定义菜单

微信公众号官方对自定义菜单的要求

  1. 一个自定义菜单最多可以包含3个一级菜单,每个一级菜单最多可以包含5个二级菜单。
  2. 一级菜单最多可包含4个汉字,二级菜单最多可包含8个汉字。

自定义菜单界面可以实现不同类型的按钮:

  1. click:点击推送事件;
  2. 查看:跳转网址;
  3. scancode_push:扫码推送事件;
  4. scancode_waitmsg:扫码推送事件,用户点击按钮后出现“消息已收到”提示框;
  5. pic_sysphoto:弹出系统拍照、发送图片;
  6. pic_photo_or_album:出现制作照片或相册发送图片;
  7. pic_weixin:弹出微信相册发送图片
  8. location_select:弹出地理位置选择器;
  9. media_id:发送消息(短信除外) 用户点击media_id类型按钮后,微信服务器会填写开发者填写的永久素材ID。素材类型可以是图像、音频、视频和图形消息。

开发前需要配置微信公众号访问Django,参见文章Django微信公众号开发访问,然后获取acces_token,参见文章Django获取微信访问。

完成以上两步后,就可以向管理员编写自定义菜单的创建、获取和删除了。

创建自定义菜单

@login_required()def create_menu(request):    #创建自定义菜单
    token = share_tools.get_accesstoken()    print(token)    url="https://api.weixin.qq.com/cgi-bin/menu/create?access_token="+token    menu={        "button": [            {                "name": "服务",                "sub_button": [                    {                        "type": "view",                        "name": "官网",                        "url": "http://www.xxx.cn"                    },                    {                        "type": "view",                        "name": "视频",                        "url": "http://video.xxx.cn"                    },
                ]            },            {                "name": "服务",                "sub_button": [                    {                        "type": "view",                        "name": "咨询",                        "url": "http://zixun.xxx.cn",                    },
                ]            },            {                "name": "工具",                "sub_button": [                    {                        "type": "view",                        "name": "搜索",                        "url": "http://search.xxx.cn"                    },                ]            } ,        ]    }    response = requests.post(url,data=json.dumps(menu, ensure_ascii=False).encode('utf8'),)    print(response.json())    if  response.json() is None:        return HttpResponse('success')        # return HttpResponse('菜单创建失败,请核对')    elif response.json()['errmsg']=='ok':        return JsonResponse('failed',safe=False)        # return  HttpResponse('菜单创建成功')    else:        return HttpResponse('failed')

获取自定义菜单

@login_required()def get_menu(request):    #获取自定义菜单    token= share_tools.get_accesstoken()    url=" https://api.weixin.qq.com/cgi-bin/menu/get?access_token="+token    response=requests.get(url)    return JsonResponse(response.json())

删除自定义菜单

@login_required()def delete_menu():    #删除自定义菜单    token = share_tools.get_accesstoken()    url="https://api.weixin.qq.com/cgi-bin/menu/delete?access_token="+token    response = requests.get(url)    return response.json()

使用Django实现自定义菜单开发就是这么简单

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门