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_第1张图片
  • 针对公众号进行开发
2.1.3.业务流程

Python学习笔记:7.5.6 Django快速建站 - Web开发实战 微信公众号开发1_第2张图片

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_第3张图片
  • windows
    在这里插入图片描述
    小编用windows,自己下载只有一个natapp.exe文件,后面在官网上下载了config.ini这个文件
  • Linux/Mac OS
    natapp

登录https://natapp.cn进入后台,如下图:

Step0: 创建免费隧道
Python学习笔记:7.5.6 Django快速建站 - Web开发实战 微信公众号开发1_第4张图片
step1:免费购买隧道:
Python学习笔记:7.5.6 Django快速建站 - Web开发实战 微信公众号开发1_第5张图片
Step2 配置隧道
Python学习笔记:7.5.6 Django快速建站 - Web开发实战 微信公众号开发1_第6张图片
Python学习笔记:7.5.6 Django快速建站 - Web开发实战 微信公众号开发1_第7张图片
这里要注意:由于是免费隧道,域名/端口会随机且不定时强制更换。所以,每次启动的时候,要检查一下是否有更换,有则跟着更换。
Python学习笔记:7.5.6 Django快速建站 - Web开发实战 微信公众号开发1_第8张图片

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

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

  • windows
    Python学习笔记:7.5.6 Django快速建站 - Web开发实战 微信公众号开发1_第10张图片
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_第11张图片
    Python学习笔记:7.5.6 Django快速建站 - Web开发实战 微信公众号开发1_第12张图片
    上图的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_第13张图片

Step1 配置路由

wechat/urls.py代码如下:

from django.contrib import admin
from django.urls import path, include, re_path

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path('^auth/?', include('auth.urls', namespace='auth')),
]

wechat/auth/urls.py代码如下:

from django.urls import path
from . import views

urlpatterns = [
	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_第14张图片

三、课程小结

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

你可能感兴趣的:(Python全栈工程师学习笔记)