前言:本文是学习网易微专业的《python全栈工程师 - Django快速建站》课程的笔记,欢迎学习交流。同时感谢老师们的精彩传授!

一、课程目标

  • 自定义菜单
  • 利用测试公众号进行测试

二、详情解读

2.1.公众号菜单
2.1.1.菜单格式
  • 最多3个一级菜单,每个一级菜单最多5个二级菜单。
  • 一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“…”代替。
2.1.2.菜单事件类型
  • click、view、scancode_push、scancode_waiting、pic_sysphoto、pic_photo_or_album、pic_weixin、location_select、media_id、view_limited

详细介绍参考微信公众号官方文档:https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Creating_Custom-Defined_Menu.html

2.2.自定义菜单
2.2.1.基本步骤
  • 实现与微信服务器的连接:确定连接 URL
  • 开发者服务器向微信服务器发送菜单定义数据
    – 微信服务器接口:https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
    wechatpy封装的方法,可参考官方文档:http://docs.wechatpy.org/zh_CN/master/client/menu.html
  • 如有必要,微信服务器向URL返回信息

实操:
Step1: 启动内网穿透,并将域名添加到wechat/wechat/settings.py中的ALLOWED_HOSTS

# 比如我这里是这样的:
ALLOWED_HOSTS = ['sz242a.natappfree.cc',]

Step2: 在测试公众号里填写路由http://sz242a.natappfree.cc/wxmessage/replytype/,这里内网穿透的域名会跟小编的不一样,要注意。

url填写好了之后,点击“提交”。此处注意本地的项目服务器要运行着。下图表示配置成功

Step3:wechat/wxmessage/urls.py中添加create_menu路由

# -*- coding=utf-8 -*-
from django.urls import path, re_path
from . import viewsapp_name = 'wxmessage'urlpatterns = [re_path('^replytype/', views.send_message, name='send_message'),path('create_menu/', views.create_menu, name='create_menu'),   # new
]

Step4: 修改wechat/wxmessage/views.py,创建create_menu视图函数

from django.http.response import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from wechatpy import parse_message, create_reply
from wechatpy.exceptions import InvalidSignatureException
from wechatpy.utils import check_signature
from wechatpy.replies import ArticlesReplyfrom wechatpy import WeChatClient  # newAUTH_TOKEN = 'f0760e4300a684b6' # 来自natapp.cn,如果不使用内网穿透,可以自己定义
APPID = 'wx4095f32e13c73b9b'    # 来自测试公众号的  new
APPSECRET = '1c7affb2196a0758f6bade337c65ef32'  # 来自测试公众号的 new@csrf_exempt
def send_message(request):if request.method == 'GET':     # 验证 urlsignature = request.GET.get('signature', '')timestamp = request.GET.get('timestamp', '')nonce = request.GET.get('nonce', '')echo_str = request.GET.get('echostr', '')try:check_signature(AUTH_TOKEN, signature, timestamp, nonce)except InvalidSignatureException:echo_str = 'error'response = HttpResponse(echo_str, content_type='text/plain')return responseelif request.method == 'POST':   # 接收微信服务器发来的信息msg = parse_message(request.body)if msg.type == 'text':# reply = create_reply('<a href="https://itdiffer.com">搜索问答技术的公众号:老齐教室</a>', msg)# 下面是图文消息reply = ArticlesReply(message=msg)reply.add_article({'title': '老齐教室','description': '搜索技术问答的公众号。/n你在这个公众号里,还能阅读到很多优秀的技术文章,看到公开课。','image': 'https://public-tuchuang.oss-cn-hangzhou.aliyuncs.com/officialaccounts_20200311104512.png','url': 'https://itdiffer.com'})elif msg.type == 'image':reply = create_reply('你刚才发给我的是一张图片', msg)elif msg.type == 'voice':reply = create_reply('你刚才发给我的是语音', msg)elif msg.event== 'click':    # 相应菜单  newreply = ArticlesReply(message=msg)reply.add_article({'title': 'Python全栈','description': '全栈工程师成功必备课程.','image': 'https://public-tuchuang.oss-cn-hangzhou.aliyuncs.com/officialaccounts_20200311104512.png','url': 'https://mooc.study.163.com/smartSpec/detail/1202847601.htm'})else:reply = create_reply('这是条其他类型消息', msg)response = HttpResponse(reply.render(), content_type='application/xml')  # reply.render() 生成 xmlreturn responseelse:logger.info('--------------------')# new
def create_menu(request):client = WeChatClient(APPID, APPSECRET)client.menu.create({'button': [{'type': 'click','name': '全栈课程','key': 'python_course',},{'name': '文章','sub_button': [{'type': 'view','name': 'Python编程','url': 'https://mp.weixin.qq.com/s/zkfCSuyMndWXkUashl3peg',},{'type': 'scancode_waitmsg','name': '扫码关注','key': 'scan_QR',}]}]})return HttpResponse('已经创建菜单。')

Step5: 访问http://sz242a.natappfree.cc/wxmessage/create_menu/

然后用手机微信扫描测试二维码

测试结果如下图:

三、课程小结

  • 01 微信公众号的菜单类型
  • 02 创建菜单实现相应功能

Python学习笔记:7.5.8 Django快速建站 - Web开发实战 微信公众号开发3相关推荐

  1. Python学习笔记:7.5.7 Django快速建站 - Web开发实战 微信公众号开发2

    前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 实现消息回复 利用测试公众号进行测试 二 ...

  2. 微信公众号python开发_Python微信公众号开发

    准备工作 首先,申请一个属于自己的微信公众号(必须保证全局管理员是自己的微信账户,否则会很麻烦),还要拥有自己的服务器(Ubuntu 系统)来部署代码,且服务器已经成功安装了网络相关的两个常用软件 u ...

  3. 基于Vue+SpringCloudAlibaba微服务电商项目实战-技术选型-004:快速整合微信公众号开发

    004:快速整合微信公众号开发 1 微信公众号开发项目演示 2 微信公众号开发设计原理 3 基于natapp将本地项目发布到外网 4 对接微信公众号测试平台 5 第三方微信框架快速实现微信开发 6 微 ...

  4. Python学习笔记:7.2.2 Django快速建站 - MTV模式

    前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 了解MTV模式 重新设置项目的模板目录 ...

  5. Python学习笔记:7.2.3 Django快速建站 - 表单

    前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 创建用户管理应用 开发用户登录功能 理解 ...

  6. Python学习笔记:7.5.1 Django快速建站 -源码版本管理

    前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 了解源码版本管理的意义 掌握初步的git ...

  7. 快速学习nodejs系列:微信公众号开发一之环境准备

    环境准备 微信公众号开发(或者是现在的小程序开发)都是目前比较火的项目开发,现在很多一些课程都是基于php进行讲解.学习的,我们现在使用nodejs来开发. 1.申请微信公众号 微信公众号现在分为:服 ...

  8. 微信公众号开发-Java版学习笔记

    微信公众号开发整体不难,主要是熟悉微信公众号常用的一些接口文档,然后会一门后端语言(比如java)即可. 罗召勇老师教程:微信公众号开发-Java版(蓝桥罗召勇) 微信公众号文档:微信公众号官方文档 ...

  9. 基于python的微信公众号开发教程_基于python的微信公众号开发教程

    应广大python学员的期盼,九宝老师精心制作的"基于python的微信公众号开发"视频教程即将上线. 该课程秉承九宝培训一贯的"简单.高效.快速"的讲课原则, ...

最新文章

  1. NVIDIA Tensor Cores解析
  2. a-awk 计算数值最大,最小,平均值并保留指定位数
  3. 解决报错:error: function declaration isn’t a prototype [-Werror=strict-prototypes]
  4. 九度OJ 1336:液晶屏裁剪 (GCD)
  5. vue中如何使用mockjs摸拟接口的各种数据
  6. 分布式 Socket 通信
  7. 新的一年,开始新的学习旅途
  8. uml+oopc嵌入式c语言开发精讲_当前火爆的嵌入式领域,为什么选择C语言作为开发语言?了解一下...
  9. 运维自动化 第二章 openpyxl的用法,读写excel内容
  10. Hibernate上路_16-继承关系映射
  11. vb.net 窗体接收键盘事件_(十五)C#WinFrom自定义控件系列-键盘(二)
  12. 求职者被字节HR放鸽子?
  13. 统计5个字符串回文个数c语言,第一章 字符串 – 1.5 最长回文子串 - 编程之法:面试和算法心得...
  14. 前端跨域 ——实践总结,亲测有效
  15. 点云孔洞定位_隧道三维点云孔洞修复方法
  16. C#:实现模糊PID控制算法(附完整源码)
  17. CorelDRAW 软件工具使用详解
  18. latex添加代码注释_在代码中添加注释:好的,坏的和丑陋的。
  19. Spark 提交yarn 虚拟内存不足解决方法
  20. 用一根网线连接树莓派跟pc

热门文章

  1. 关联性图注意力网络:Relational Graph Attention Networks(ICLR2019)
  2. 微信如何群发消息?如何群发突破200上限?
  3. 微博情感分析——数据的获取(一)
  4. 前端实习生如何快速适应公司项目
  5. windows下安装nmap
  6. 希尔伯特之梦,以及梦的破灭
  7. UniSwap V3协议浅析(下)
  8. 微信小程序获取当前年月日时分秒
  9. Nacos系列【25】源码分析篇之Spring Cloud启动器
  10. □ 影片名:《审死官》(1203) 在线播放