Python+Tornado开发微信公众号(上)

本教程针对的是已掌握Python语言基本用法并且掌握其任一Web框架的用户。

本教程使用的Python版本为3.5.0, Web框架为Tornado, IDE开发工具为PyCharm,整个开发过程是在Windows环境下测试开发,最终上线部署至centos服务器。

备注:(1) 如果您是python小白,建议参考Python入门教程

(2) 对tornado框架还不熟悉的同学,建议参考Tornado中文文档

本教程整体框架如下:

思维导图如下:

整体项目结构如下:

下面我们正式进入详细的开发流程

一. Python开发环境和项目的初始化搭建

1. 安装python及pip,并配置环境变量,安装tornado框架

Python及pip安装参考教程windows下面安装Python和pip终极教程

(1) 下载Python包并安装 点此下载

(2) 将python配置到系统环境变量

(3) 下载pip包并安装 点此下载

(4) 将pip配置到系统环境变量

(5) 使用pip安装tornado框架 指令为:

2. 选择一款开发Python的IDE

本教程使用的是PyCharm点击下载

附带: PyCharm 2016.2.3专业版注册码

3. 选择一个代码托管平台

本教程使用的是开源中国Git@osc代码托管平台 码云 - 开源中国代码托管平台,请自行注册,并配置账户下的SSH密钥,关于Git的使用,请参考教程 Git教程 - 廖雪峰的官方网站

4. 创建Web项目

使用Tornado搭建项目入口,端口号为8000,项目搭建至完成微信校验所需的基本代码如下:

项目整体目录

为了方便调试,编写了日志管理文件logger_helper.py

备注: 为防止日志输出报错, 请各位同学注意修改日志输出目录为自己定义的文件目录

配置Tornado的url路由规则url.py

基本配置文件run.py

(5) 同步项目文件至Git托管平台

项目入口文件及微信校验文件已编写好,使用Git同步代码至托管平台,接下来需要配置端口映射,使外网能访问到我们的本地项目,便于完成微信服务端校验.

5. 使用花生壳,配置本地测试所需端口映射

微信公众号开发需要配置服务端URL, 验证URL的有效性,这个URL必须以http://或https://开头,分别支持80端口和443端口,我们目前测试阶段都是在自己电脑上测试(本地测试),为了满足不断修改代码能够即时生效, 因此需要一个外网ip端口映射到本地(内网穿透),我本人使用的是花生壳内网穿透服务,下面是花生壳的使用流程:

(1) 花生壳的账户注册 花生壳软件-内网也能用!内网动态域名,注册成功后,会赠送一个免费域名,这个域名同时也配备了一个公网ip

(2) 进入到花生壳管理界面, 选择内网穿透菜单,进入到配置界面

(3) 选择 右边的"编辑"操作,弹出编辑映射面板,在"内网主机"一项,填上自己本地电脑的ip地址,端口填写自己将要创建的web应用端口,我本地项目用的端口号为8000,此处填写8000即可

二. 微信公众号注册及开发模式校验配置

填写完毕后,先启动我们的项目,运行python run.py指令后, 保证我们的服务器是运行着的, 然后点击"提交",如果你是按照以上流程操作的话,会提示提交成功,否则校验失败,需要我们通过日志检查是哪一块出了问题.

(2) 接下来,校验成功后,点击启用,即可激活开发者模式

三.接收关注/取关事件推送和自动回复

1. 接收关注/取关事件推送

wxauthorize.py

以下是在该文件中增加的post方法,用来接收事件推送

2. 自动回复

(1) 同接收关注/取关事件推送消息一样,用户给我们公众号发送消息时,微信公众平台也会推送数据至我们的后台微信校验的接口,在接收到消息后,我们取出自定义的关键字进行匹配,匹配到了就执行自动回复

(2) 微信公众平台也提供了语音识别功能, 将用户发送的语音内容识别转化为文字,发送给我们后台,在使用该功能时需要在接口权限中打开语音识别功能.

wxauthorize.py

以下是在该文件中post方法中增加的一个判断,用来匹配用户文本消息和语音消息中的关键字

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏十月梦想

Bootstrap环境安装

注意:在使用bootstrap的时候引入文件<link rel="stylesheet" src="bootstrap的css文件路径">,外部引入方式引入cs...

704
来自专栏前端知识分享

Angular中sweetalert弹框的使用详解

最近太忙了,项目中使用的弹框老板嫌太丑,让我们优化一下,我在网上找了一下,找到了sweetalert弹框,算是比较好看的弹框了。所以我就想办法将sweetale...

834
来自专栏一“技”之长

Bootstrap响应式前端框架笔记七——下拉菜单

    在Bootstrap的Css框架中,下拉菜单属于组件。一个完整的下拉菜单应该有两部分组成,一个触发按钮与一个选项列表。触发按钮dropdown-togg...

520
来自专栏xingoo, 一个梦想做发明家的程序员

Angular2入门体验

好的工具往往使得开发应用更快更简单,而不是任何模块都手动开发。angualr cli就是一个支持 创建工程,添加文件,对各种任务如测试、打包、部署等迭代。 本文...

2676
来自专栏xingoo, 一个梦想做发明家的程序员

Express开发实例(1) —— Hello,world!

Express是NodeJs开发中最常用的基础模块。NodeJs本身有Http模块,但是易用性并不好,因此有人在此基础上开发了Express模块。 什么是...

1838
来自专栏小白课代表

软件分享 | VC++ 6.0 (WIN10可用)安装教程

Microsoft Visual C++(简称Visual C++、MSVC、VC++或VC)是Microsoft公司推出的以C++语言为基础的开发Window...

1023
来自专栏老马寒门IT

08Vue.js快速入门-Vue综合实战项目

8.1. 前置知识学习 npm 学习 官方文档 推荐资料 npm入门 npm介绍 需要了解的知识点 package.json 文件相关配置选项 ...

2857
来自专栏林德熙的博客

win10 uwp 退出程序

作为一个微软的程序员,如果用户说一个功能好用,那么要在下一个版本去掉这个功能。如果用户觉得我的应用好用,我就需要立刻关闭我的应用。

641
来自专栏coding

mycli--让你惊艳的mysql客户端

1052
来自专栏Flutter&Dart

DartVM服务器开发(第三天)--pub管理器、返回html页面

右键点击项目名,New--File,命名为:pubspec.yaml 并在文件里面输入下面内容 (因为在使用外部包时,首先你应该是一个包,所以下面这个内容是...

714

扫码关注云+社区