前言
近几年,Python语言的火热,少不了培训机构的推波助澜,更离不开Python语言本身的魅力,他的简洁让普通人也能走进代码的世界,就连地产界大佬王老板也来凑热闹。Python语言像一个万能百宝箱,能做的事情太多,也让很多初学者迷了眼,什么都想学,最后,一场空!
Python自学第一技
不贪多,选中一个方向深入研究学习,本篇专注Python Web开发,其他方向读者可绕行!
伴随着移动互联网的浪潮,移动开发如火如荼,一时风头无两,曾经哪些专注PC端开发的前辈们不知是否还在,但栖息在“企鹅”的翅膀下富起来的个人企业已不在少数。作为Python语言下优秀的web开发框架django自然也能胜任移动互联网时代,虽然他的架构依然倾向于PC开发,但丝毫也不会影响我们学习他,并运用它进入移动开发的大门,跟随企鹅的步伐向钱迈进!
django微信公众号开发步骤
既然是公众号开发,那么自然你先得要有一个公众号,至于是不是服务号、订阅号不重要,我们又不是去运营,个人号也是可以的,止于如何注册,这里不做赘述,大家自行去解决!
一、准备微信公众平台测试账号
这里就默认大家已经有了自己的公众号,进入之后可以看到在设置开发菜单下有个开发者工具,点击之后我们可以看到红框框起来的两项,如果你从未在别的平台绑定过开发者,那么首页点击“web开发者工具”进入绑定自己为开发者,之后点击“公众平台测试账号”,扫码登录开通自己的测试账号,测试账号拥有公众号所有的高级权限,我们可以在开发过程中测试所有功能接口,但有一个要求是操作人员必须先关注自己的测试账号!
登录进入自己的公众平台测试账号之后,界面如下所示!
- 测试号信息
appID和appsecret这两个自然不必说,是公众号开发的一切基础;
- 接口配置信息
URL:这里填写公众号的回调地址
Token:自己填写,可以复杂,也可以简单,开发的时候尽量简单点,自己能记住就行!
这里的信息对应的是正式公众号基本配置里的信息,在切换到正式公众号的时候,程序中对应的就得在这里配置!
- JS接口安全域名
这里如果你不是用微信的JSSADK的话,那么就不需要设置,需要的话就设置,测试号支持IP和域名,这里只填入域名或IP,注意如果你开发不是用80端口,那么域名和IP后还得跟随端口号!注意:这里对应的正式公众号在右侧顶部头像和用户名的下拉菜单中有个功能设置中配置!
了解了,这几项之后,这里要注意,第二项接口配置信息在回调地址【URL】无法访问的情况下是不能验证成功的,那么这里又有了一个要求就是你必须要有一个能访问的服务器,如果是域名,还得备案。这就给不少初学开发者设置了门槛,那么,既然想进入这行,这点投资是值得的!
二、准备好服务器进入开发
Python拥有非常多的库,安装Python之后官方很多功能也是有许许多多的库来提供,只不过这些库有官方来维护,那么,第三方库自然更是多如牛毛,几乎你能想到的每一个方向都有对应的库,我们下来就是要利用一个wechatpy的库来进入之后的开发!
- 创建虚拟环境安装django
# 创建虚拟环境 python3 -m venv venv # 激活虚拟环境 venv\Scripts\activate ## windowns激活 source venv/bin/activate ## linux激活 # 安装django pip3 install django
- 安装wechatpy
pip3 install wechatpy # with cryptography (推荐) pip3 install wechatpy[cryptography] # with pycryptodome pip3 install wechatpy[pycrypto]
- 创建一个django项目和应用
# 创建一个django项目 django-admin startproject mysite . # 创建一个应用demo python3 manage.py startapp demo
- 在demo的views.py文件中创建回调验证接口代码,如下
from wec import check_signature class WechatServe(View): # 回调接口 def get(self, request, *args, **kwargs): signature = reque('signature', None) timestamp = reque('timestamp', None) nonce = reque('nonce', None) echostr = reque('echostr', None) token = con('token') try: check_signature(token, signature, timestamp, nonce) except InvalidSignatureException: pass return HttpResponse(echostr) def post(self, request, *args, **kwargs): # post请求的数据会回调到这里,比如用户向公众号发送消息 msg = parse_message) print(msg, 'msg') return HttpResponse('success')
这个视图的作用就是在第二步的时候微信官方用来验证服务器地址的有效性,其中get请求中的参数说明如下:
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:
参数 | 描述 |
signature | 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 |
timestamp | 时间戳 |
nonce | 随机数 |
echostr | 随机字符串 |
开发者通过检验signature对请求进行校验,也就是wechatpy为我们提供的check_signature()方法为我们做的事情,他做了中间的一些加密对比的事情,验证成功后,原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
- 在demo应用下创建一个urls.py的文件,代码如下
from django.urls import path from .import views # 应用的命名空间 app_name = 'demo' urlpatterns = [ # 构造验证视图的URL地址 path("server/", views.Wec(), name="server"), ]
- 将demo下创建的urls.py 引入到项目mysite的urls.py中
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.), path("demo/", include('demo.urls')), ]
这样我们就构造了一个有效的验证视图,URL:, 那这个url地址就是在第二步接口配置信息中需要填入的域名!
记住,别忘了启动调试服务器(runserver),如果有端口号,还需要加入端口号,至此,我们就可以正式进入微信公众平台之后的开发了,准备工作就到此告一段落!
欢迎大家关注学习,一起进步,笔者专注django相关开发,对django有深入研究,可一起学习探讨,并且承接django相关项目的开发任务!