django学习 | 实战 # 微信自定义菜单

本文介绍了如何使用django和wechatpy实现微信自定义菜单功能。通过查看微信文档,利用wechatpy库创建和删除菜单,详细讲解了代码实现过程,包括在django后台管理系统中动态设置菜单的步骤。
摘要由CSDN通过智能技术生成

目录

实现的效果图

# 图1:django的后台管理系统之自定义菜单

# 图2:django的后台管理系统之新增自定义菜单

# 图3:在公众号上的实现效果

一、先看看我们需要做什么

1、看微信的文档

2、用到的工具 wechatpy

3、顺一下思路

二、代码实现

wechat/models.py:

wechat/utils.py:

wechat/admin.py:


由于上面那个原因,在做微信开发的时候若是启用了服务器配置,原本在微信后台设置的自动回复和自定义菜单将会失效。为解决这个问题,这里将会讲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 数
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Django架构下验证企业微信用户信息,可以按照以下步骤进行: 1. 在企业微信中创建一个应用,并获取应用的AgentId、CorpId、Secret等信息。 2. 在Django中创建一个接口,用于接收企业微信服务器发送过来的请求。可以使用Django的csrf_exempt装饰器来关闭跨站请求伪造保护。 3. 在Django中对请求进行验证,验证方式包括校验请求的URL是否来自企业微信服务器、校验请求的消息体是否来自企业微信服务器、校验请求的时间戳是否过期等。 4. 在Django中向企业微信服务器发送请求,获取access_token和jsapi_ticket等信息,并将这些信息缓存起来,以便后续使用。 5. 在Django中对用户的身份进行验证,验证方式包括根据用户授权的code获取用户的UserId、根据UserId向企业微信服务器发送请求获取用户的详细信息等。 6. 在Django中生成一个自定义的token,并将token、UserId等信息保存到数据库中。 7. 在前端通过wx.setStorageSync()方法将token保存在本地缓存中。 8. 在后续的请求中,前端通过wx.getStorageSync()方法获取token,并将token通过HTTP请求的Header中发送到Django服务器。 9. 在Django中对每个请求进行token校验,如果校验通过,则维护用户的登录态。 需要注意的是,企业微信的验证过程中需要使用到加密和解密算法,例如AES算法和SHA1算法等。为了保障用户信息的安全,需要对传输的数据进行加密和解密处理。同时,为了防止token被伪造,需要在生成token时加入一些随机因素,例如时间戳和随机字符串等。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值