开发之前需要准备的内容

  • 1.一个服务器
  • 2.申请微信公众平台。
    • 为服务器配置MYSQL+DJANGO2.X

1.一个服务器

进行了各方面的对比后,我选择了稳定和相对熟悉的阿里云服务器Elastic Compute Service(ECS),ECS的优点可以百度了解,这里就不赘述。
镜像选用了 ubuntu_18_04_64系统。
值得一提的是,阿里云服务器提供了服务器私钥串。 在使用SSH时,需要将私钥串配置好才可以进行SSH远程连接以修改服务器设置。
私钥配置过程参考如下链接:
https://blog.csdn.net/winhye/article/details/75221311
私钥配置完成后 SSH不再需要提供用户名密码就可以直接连接到远程云服务器。

2.申请微信公众平台。

由于我是以个人的方式来申请微信公众平台,所以我只能申请微信订阅号,但是订阅号配合上服务器,也能实现很多的功能。如果想做WX支付功能,订阅号是无法提供接口的,那需要服务号才可以。
申请完毕后,需要为订阅号进行开发者配置。
在开发者选项的基本配置中,分别确认和设置 APPID 、APPSECRET、IP白名单。
当启动开发者模式时,服务器和WX服务器的每一次数据传递,都需要APPID和APPSECRET的参与。所以APPID和APPSECRET应设置为常量储存在服务器配置文件中,方便调用和查询。
IP白名单定义了WX公众号只会接收来自白名单内来源的的数据传递。
在开发者选项的服务器配置中,分别配置URL、TOKEN、EncodingAESKey、以及设置消息的加密解密模式。
所有发送给WX公众号的用户消息,都会被转发到URL服务器,服务器只支持80或是443端口。
TOKEN为自定义内容,也会做为参数参与到服务器之间的通信中。用来识别数据的合法性。
EncodingAESKey可以随机生成。
消息的加密解密模式暂时设置成明文模式。这样做的目的是为了在开发过程用根据收到和发出的内容判断BUG出现的位置和排错。

为服务器配置MYSQL+DJANGO2.X

首先python2.7 会在2020年1月1日后停止更新, 这里使用了PYTHON3.6.8
DJANGO使用了2.2.3版本
在使用python3时,旧的MySQLdb库对Python3不支持,采用了PyMySQL库来代替,会导致出现各种BUG,特别是执行以下命令的时候:
python manage.py makemigrations
python manage.py migrate
BUG1:
无论是否执行pip3 install mysqlclient安装最新版,都会抛出:当前的mysqlclient版本过低,需要使用mysqlclient 1.3.3或以上的版本。
这时要找到python3目录中的mysql包以及mysql包中的base.py文件。将抛出这一错误的代码注释掉。
安装路径下的django\db\backends\mysql\base.py文件
可以使用pip3 show django 来显示django的安装路径

BUG2:
File “/usr/local/lib/python3.6/dist-packages/django/db/backends/mysql/operations.py”, line 146, in last_executed_query
query = query.decode(errors=‘replace’)
AttributeError: ‘str’ object has no attribute ‘decode’
解决方法是找到这个文件的第146行
将原本的

修改为:

(记得别忘了引入force_str方法)
from django.utils.encoding import force_str

然后在mysql中创建库,并声明UTF8编码,这样做是为了方便存储中文数据。
CREATE DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;

在服务器和微信平台都准备就绪后。
我们需要先用服务器接入微信公众平台。
在上一步的提交微信公众平台中的服务器配置时,微信服务器会发送GET请求到服务器配置好的URL中去。

我们需要提取到请求中的echostr参数,并原样返回给发送的来源服务器。

当来源服务器成功接收到我们返回的echostr参数时,公众平台的服务器配置才能提交成功。

在服务器配置提交成功后,所有用户发给公众号的消息,理论上会直接以POST+XML的方式被转发到我们的服务器上,但是到了这一步,我试验了很久,测试向公众号发送用户数据,期间服务器都没有收到任何的数据或是请求。
在查阅了相关资料后,得到如下结论。
我当前所配置配置的接口是不支持302重定向的!如果指向URL是http://xxx.xx/test这样的格式的话,认证是可以通过的,但是消息接口数据不走。
参考了如下链接,绕了好几个弯,直到发现这个贴子。问题才以最简单的方式解决。
https://blog.csdn.net/laven90/article/details/43965825?locationNum=8
解决方法就是在settings.py中添加新的控制开关。
APPEND_SLASH=True
到现在为止,公众号发送的信息,终于可以转发到我的服务器了。

这时出现了新的错误。CSRF安全机制禁止了外部的POST请求。
这个错误只需要注释掉settings.py中的这一行即可。

现在重新测试,使用WX向公众号发送了一条test消息.

收到一组xml消息。
其中ToUserName代表公众号ID
FromUserName代表用户的openid (同一用户在不同公众号下的openid是不相同的)
MsgType代表消息的类型。微信的消息分为文本、语音、图片、图文等等不同类型的消息。
Content 代表内容。
当前使用的是明文传递方式。
在项目开发完成后,可以将消息的传递方式改为密文。再配合加密解密模块,可以提高安全性。

记录:使用DJANGO从0开始搭建微信公众平台(0)相关推荐

  1. 公众平台 python_轻松实现python搭建微信公众平台

    本文主要是一步一步教大家如何利用python搭建微信公众平台,有兴趣的朋友可以参考一下 使用的工具,python 新浪SAE平台,微信的公众平台 你需要先在微信的公众平台与新浪SAE平台上各种注册,微 ...

  2. python微信公众号翻译功能怎么用_使用python一步一步搭建微信公众平台(二)----搭建一个中英互译的翻译工具...

    距离上次写使用python一步一步搭建微信公众平台(一)已经有几个月了,当中自已也搭建了一个中英文互译的小应用,可是由于英文翻中文好弄,中文翻译成英文一直有问题,知道是编码的问题,但是一直搞不定,于是 ...

  3. 用python设计一个简易的英汉互译界面_使用python一步一步搭建微信公众平台(二)----搭建一个中英互译的翻译工具...

    距离上次写使用python一步一步搭建微信公众平台(一)已经有几个月了,当中自已也搭建了一个中英文互译的小应用,可是由于英文翻中文好弄,中文翻译成英文一直有问题,知道是编码的问题,但是一直搞不定,于是 ...

  4. 使用python-aiohttp搭建微信公众平台

    aiohttp是一个基于asyncio的异步http框架,在高并发的情况下具有很好的性能,这也是我选择使用aiohttp来搭建微信公众平台的原因.但是由于网上关于aiohttp的资料较少,再加上自己对 ...

  5. python微信公众号框架_轻松实现python搭建微信公众平台

    本文主要是一步一步教大家如何利用python搭建微信公众平台,有兴趣的朋友可以参考一下 使用的工具,python 新浪SAE平台,微信的公众平台 你需要先在微信的公众平台与新浪SAE平台上各种注册,微 ...

  6. 百度云搭建微信公众平台服务器,微信大众开放平台开发03-百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试...

    微信公众开放平台开发03---百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试 微信公众开放平台开发03---百度 ...

  7. 用python做公众号网页_使用python一步一步搭建微信公众平台(一)

    最近无聊,想玩玩微信的公众平台,后来发现乐趣无穷啊~ 使用的工具,python 新浪SAE平台,微信的公众平台 你需要先在微信的公众平台与新浪SAE平台上各种注册,微信平台注册的时候需要你拍张手持身份 ...

  8. 用 Rails 搭建微信公众平台 API

    微信 API 简介 先来看看 API 的工作流程和机制 微信公众平台的账户可以开启"开发模式"(在"高级功能"中),开启之后,用户发送微信到你的账户时,将有如下 ...

  9. 百度BAE搭建微信公众平台-git的使用

    百度BAE现在使用还需要先申请实名认证,提交通过后便可以开始使用了.目前是按日计算收费的状态. 在创建应用时选择使用git进行版本控制. 接下来在本地新建一个项目文件夹,比如我在E盘新建了一个opti ...

最新文章

  1. Transformer-LS霸榜ImageNet,输入长度提升三倍!极度压缩参数
  2. 设置作者_阿里Java开发手册建议创建HashMap时设置初始化容量,但多少合适
  3. PHP 实现Office word 关键词添加背景色
  4. Linux 中文件管理常用的工具
  5. 随着计算机多媒体技术的产生和发展,多媒体技术及其应用与发展论文(本科)10...
  6. python函数编程实战_(转)函数式编程实战教程(Python版)
  7. 爱奇艺体验Serverless极致扩缩容,资源利用率提升40%
  8. oracle 11g 修改 sga,oracle 11g 调整SGA
  9. 江西冶金职业技术学院计算机,计算机基础知识江西冶金职业技术学院.ppt
  10. Redis在Windows下设置服务启动
  11. Excel中找出两列中相同的值
  12. 直接拿来用的 CTO 创业技术栈指南!
  13. wmaster0接口的简单介绍
  14. 最好用的进销存软件测评排名
  15. photoshop cs6(mac版)安装教程
  16. C#使用MathNet的矩阵与向量运算示例
  17. [车联网安全自学篇] 关于IoT安全该如何入门?你必须知道的那些事「3万字详解」
  18. Ineligible Devices 不被识别的设备
  19. 分享5款让你工作事半功倍的软件
  20. 2021年美赛解题思路汇总Final!!!

热门文章

  1. 四.树莓派4B-更换系统源
  2. 计算机组成与体系结构——计算机系统概述、数据表示方法
  3. 基于Java毕业设计校园外卖零食商城系统源码+系统+mysql+lw文档+部署软件
  4. 使用微信号开通检测软件的成功案例(一)
  5. 75 ----平面二次曲线方程的化简: 移轴变换、转轴变换、伸缩变换
  6. 在windows系统使用Gazebo9的小问题
  7. 富格林金业:原油天然气怎么掌控买卖点?
  8. 智慧水务大数据平台-智慧水务建设方案
  9. (二)基于kubernetes(1.25.2) 进行基础prometheus监控
  10. Java编程规范-文件组织与排版