Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)

前言:本文是学习网易微专业的《python全栈工程师 - Django快速建站》课程的笔记,欢迎学习交流。同时感谢老师们的精彩传授!
一、课程目标
  • 了解微信公众号开发流程
  • 实现内网穿透
  • 完成微信公众号开发验证
二、详情解读 2.1.微信公众号开发 2.1.1.微信公众号
  • 订阅号:为媒体和个人提供的一种信息传播方式,主要偏于为用户传达资讯(类似报纸杂志),主要的定位是阅读,每天可以群发1条消息。
  • 服务号:为企业,政府或组织提供对用户进行服务,主要偏于服务交互。
  • 企业号:为企业、政府、事业单位,实现生产管理和协作运营的移动化,主要用于公司内部通讯使用,旨在为用户提供移动办公,需要先有成员的通讯信息验证才可以关注成功企业微信。
2.1.2.微信公众号后台管理
  • 没有针对公众号做开发
    Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
    文章图片
  • 针对公众号进行开发
2.1.3.业务流程 【Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)】Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
文章图片

2.2.开发者环境 2.2.1.内网穿透
  • 内网穿透,网络地址转换(Network Address Translation,NAT):通过映射端口,能让外网的计算机找到处于内网的计算机。
  • 将本地计算机设置成为开发者服务器:有公网可以访问的域名,公网域名与本地IP对应(如:127.0.0.1:8080
  • 打开:https://natapp.cn
    – 用户注册
    – 实名认证
    – 下载客户端
    Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
    文章图片
  • windows
    Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
    文章图片

    小编用windows,自己下载只有一个natapp.exe文件,后面在官网上下载了config.ini这个文件
  • Linux/Mac OS
    natapp
登录https://natapp.cn进入后台,如下图:
Step0: 创建免费隧道
Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
文章图片

step1:免费购买隧道:
Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
文章图片

Step2: 配置隧道
Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
文章图片

Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
文章图片

这里要注意:由于是免费隧道,域名/端口会随机且不定时强制更换。所以,每次启动的时候,要检查一下是否有更换,有则跟着更换。
Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
文章图片

  • 在本地执行
    Linux/Mac OS
# 获得权限 % chmode a+x natapp# 这个在软件natapp同一个目录下执行的命令 % ./natapp # 显示认证错误 % ./natapp -authtoken your-token

如果有显示下面的结果,则表示本地执行成功:
Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
文章图片

  • windows
    Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
    文章图片
2.2.2.创建项目
  • 创建虚拟目录
python3 -m venv official cd official source ./bin/activate

  • 安装Django
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/django==2.2.10

  • 创建项目
django-admin startproject wechat

settings.py中配置公网域名
ALLOWED_HOSTS = ['meq566.natappfree.cc', ]

  • 测试
    – 启动服务:wechat% python manage.py runserver 127.0.0.1:8080
    – 用公网域名访问:http://meq5b6.natappfree.cc
2.3.配置服务器和验证 2.3.1.申请开发测试账号
  • 地址:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
    Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
    文章图片

    Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
    文章图片

    上图的token是免费隧道里的token。如何进行服务器验证呢?
2.3.2.阅读官方文档
  • 网址:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
    – 第一步:填写服务器配置
    – 第二步:验证消息的确来自微信服务器
    – 第三步:业务逻辑
2.3.3.创建应用
  • 接收来自微信服务器的信息
python manage.py startapp auth # 安装第三方包 pip install wechatpy

  • wechatpy官网:http://docs.wechatpy.org/zh_CN/master/
    Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
    文章图片
Step1 配置路由
wechat/urls.py代码如下:
from django.contrib import admin from django.urls import path, include, re_pathurlpatterns = [ path('admin/', admin.site.urls), re_path('^auth/?', include('auth.urls', namespace='auth')), ]

wechat/auth/urls.py代码如下:
from django.urls import path from . import viewsurlpatterns = [ path('', views.auth, name='auth'), ]

Step2: 编写wechat/auth/views.py中的auth视图函数
from django.shortcuts import render from django.http import HttpResponse from wechatpy.utils import check_signature from wechatpy.exceptions import InvalidSignatureException# Create your views here. def auth(request): sign = request.GET.get('signature') echostr = request.GET.get('echostr') timestamp = request.GET.get('timestamp') nonce = request.GET.get('nonce') token = '免费隧道里的authtoken' try: check_signature(token, sign, timestamp, nonce) except InvalidSignatureException: raise return HttpResponse(echostr)

上述准备做好后,可以点击测试公众号里的提交,结果如下图:
Python学习笔记(7.5.6 Django快速建站 - Web开发实战 微信公众号开发1)
文章图片

三、课程小结
  • 01、了解微信公众号
  • 02、内网穿透
  • 03、完成开发都验证

    推荐阅读