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

一、课程目标

  • 实现消息回复
  • 利用测试公众号进行测试

二、详情解读

2.1.消息类型
2.1.1.回复的消息类型
  • 文本、语音、图片、图文
2.2.实现消息回复

2.2.1.基本步骤
  • 实现与微信服务器的连接:确定连接URL
  • 微信服务器以POST方式,通过URL,向开发者服务器转发用户提交的信息
  • 开发者服务器接收上述信息后,向微信服务器返回消息:以XML的形式
  • 微信服务器收到上述XML之后,将消息返回到用户端

实操一:

Step1: 创建应用wxmessage,并添加到wechat/wechat/settings.py

python manage.py startapp wxmessage
INSTALLED_APPS = [......'wxmessage',
]

Step2: 启动上节课学的netapp.exe,并将域名添加到wechat/wechat/settings.py中的ALLOWED_HOSTS

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

Step3: 添加路由
wechat/wechat/urls.py

from django.contrib import admin
from django.urls import path, include, re_pathurlpatterns = [path('admin/', admin.site.urls),   path('wxmessage/', include('wxmessage.urls', namespace='wxmessage')),
]

Step4: 新建应用的路由文件wechat/wxmessage/urls.py

# -*- 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'),
]

Step5: 编辑wechat/wxmessage/views.py中的视图函数send_message

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 ArticlesReplyAUTH_TOKEN = 'f0760e4300a684b6' # 来自natapp.cn,如果不使用内网穿透,可以自己定义@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)else:reply = create_reply('这是条其他类型消息', msg)response = HttpResponse(reply.render(), content_type='application/xml')  # reply.render() 生成 xmlreturn responseelse:logger.info('--------------------')

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

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

Step7: 测试上面的功能是否实现了。用手机微信扫描测试二维码

测试结果如下图所示:

图文消息测试结果:

更多关于微信公众号的用法,可以参考官方文档:https://docs.wechatpy.org/zh_CN/master

三、课程小结

  • 01 微信公众号的消息类型
  • 02 开发者服务器接收和返回消息

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

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

    前言:本文是学习网易微专业的<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. 又一个创业者自杀:心生郁结,被曝曾卖房给员工发工资
  2. 数据结构【图】—024最小生成树
  3. mysql字段名与关键字冲突(near to:syntax error)
  4. log4j配置不生效
  5. MRP信息汇总BAPI(Z_IF_MRP_TOTAL_LIST)
  6. vue-:class的几种使用方式
  7. 看人家如何拿到腾讯阿里的offer
  8. 数据中心细节_当细节很重要时数据不平衡
  9. 软件测试测试用例编写_不要先编写所有软件测试-只需编写一个
  10. 最新!MongoDB 重磅发布 MongoDB 5.0 和无服务器 Atlas
  11. C++ select模型聊天室初版
  12. config.o:文件无法辨识_HAZOP有哪些局限性,及系统生命周期不同阶段的危险辨识...
  13. Java实现斐波那契数列的两种方法
  14. 解决wordpress前后台非常卡的几个方法
  15. linux 安装Curl
  16. 【大一期末项目】qqclienkey利用:基于qqclientkey的纯c++项目实践
  17. sass-------sass的基本介绍、node.js的sass工具
  18. win10计算机错误代码,win10电脑更新失败提示错误代码0x80070424修复方法
  19. 金杉号:2022什么工作最赚钱,未来十年最吃香的4个稳定的工作
  20. java 生成2位随机数_java生成随机数保留数点后两位

热门文章

  1. 王佩丰第一讲 认识excel笔记
  2. 免费建立自己的微信公众号平台
  3. 避雷不可见字符(‘‎‎\u200E‘)
  4. 知名技术团队博客网站
  5. 二叉树中两节点之间最短路径
  6. Kotlin 开始篇之 Kotlin 的优点
  7. IT富翁们的第一份工作会给你怎样的启示
  8. 哈希表(哈希函数和处理哈希冲突)_20230528
  9. PHP获取前天和昨天日期
  10. JavaScript for、for..in、for..of、forEach的区别