Django+阿里云服务器+微信开发公众号

Django端:

根目录下打开powershell新建项目:

django-admin startproject weixinproject

打开weixinproject文件夹下,powershell新建app:

python manage.py startapp weixin

用 tree /F命令看看文件结构:项目文件夹(weixinpro)和app文件夹(weixin)在同一目录下。

打开weixinproject文件夹,setting中installed_apps添加你刚才新建项目的名称。

并且注意把setting中的ALLOWED_HOSTS = []改成ALLOWED_HOSTS = ['*'],这样就允许外网加ip请求页面了。

好了,setting中先就这样。

先把Django跑起来吧

python manage.py runserver 0.0.0.0:80

接下来,我们先缓一缓,去看看微信连接第三方服务器是怎么说的。

WeChat端:

再申请完公众号后,打开微信公众平台 https://mp.weixin.qq.com/,下拉找到基本配置,看到服务器配置(未启用),点击修改配置。url填写http://服务器外网ip 即可,微信连接服务器只能用http80端口。

写自己的token,待会需要。随机生成一串EncodingAEKey,加密方式先选择明文吧。

现在写完个倘若点提交会弹出一个消息,token不匹配。

在这里讲一下原理,微信服务器用GET的方法请求你的服务器并发送一个timestamp,一个nonce,一个echostr,一个signature去你的服务器上,你需要在你的服务器后台代码中,加上你刚刚在微信中加的token,你的这串token将与timestamp和nonce进行排序,并连接成一个字符串。这串字符串的编码要转换成utf-8的格式后,进行hash的sha1加密,加密后返回的字符串要与发送到你的服务器上的signature对比,如果一模一样就返回echostr,那么配置就完成啦。接下来再去配置我们的Django。

Django端:

原理是什么样的呢,开启后台之后呢,项目内的urls.py要先发挥作用,添加路由,所以我们需要改一个urls.py,增加一个urls.py。

请把你的项目文件夹下(startproject命令后产生的文件夹)的urls.py改为

"""weixinpro URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from django.conf.urls import url, include
urlpatterns = [
    path('admin/', admin.site.urls),
    path(r'',include("weixin.urls")),
]

我在原来的基础上增加了 from django.conf.urls import url,include

目的是用include函数。include等于是把weixin app文件夹内的urls.py所有的url打包进来。因为一个app内不止有一个页面,一个事件,这样做是防止app多了之后乱起来。虽然现在页面少,但这样做是个好习惯。对的,这个时候weixin文件夹还没有urls.py,我复制这个urls.py过去,放在weixin文件夹内。

因为与微信连接类似前后端分离,所以不需要建立templates文件夹放网页。我把与该urls.py在同一个文件夹下的views.py import进来,因为要用里面的函数。r''代表我能直接用 http://外网ip 访问到。必须from . import views意思就是引用该文件夹中的views,现在代码环境越来越严苛了,import views都是错的,因为它的名称与一个模块冲突。path中的第二个参数是访问http://外网ip 时默认执行的函数,即views里面的wx_main函数。

from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
    path(r'',views.wx_main),
]

下面展示我的views.py函数。

from django.shortcuts import render
from django.http import HttpResponse
import json
import hashlib
def wx_main(request):
	if request.method=="GET":
#获取微信服务器上传来的几个参数
		signature=str(request.GET.get("signature",None))
		timestamp=str(request.GET.get("timestamp",None))
		nonce = str(request.GET.get('nonce', None))
		echostr = str(request.GET.get('echostr', None))
		token="wodetoken112233"
#将要排序加密的参数放在一个数组中
		hashlist = [token, timestamp, nonce]
		hashlist.sort()
		hashstr=''
#连接
		for i in hashlist:
			hashstr+=i
#加密 sha1
		hashstr = hashlib.sha1(hashstr.encode(encoding="UTF-8")).hexdigest()
#验证
		if hashstr==signature:
			return HttpResponse(echostr)
		else:
			return HttpResponse("error")

有的时候不报错却出错了可能是因为你的hashlib包没装。

这样就ok了,我一共改了一个setting.py,一个urls.py,增加了一个urls.py,改了一个views.py,现在访问 http://外网ip 应该得到的是一个error字符串。然后提交一下就会显示提交成功啦。再点击启用就一切ok了

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将Python代码部署到阿里云服务器,并与微信小程序端进行交互,需要按照以下步骤进行操作: 1. 取得阿里云服务器 首先需要购买阿里云服务器,并进行相应的配置和部署。可以选择ECS实例作为服务器,然后设置好安全组、网络和域名解析等。 2. 安装Python环境 登录到阿里云服务器后,需要安装Python环境。可以通过SSH远程连接服务器,并使用包管理工具(如yum或apt)安装Python。 3. 部署Python代码 将编写好的Python代码上传到服务器,可以使用FTP、SCP或其他工具进行文件传输。然后在服务器上运行Python代码,确保代码可以正常执行。 4. 搭建Flask或Django框架 如果需要搭建Web服务来与微信小程序端进行交互,可以选择使用Flask或Django等Python框架。安装相应的框架,并编写代码来处理微信小程序端发送的请求。 5. 建立API接口 在Python代码中编写API接口,以便与微信小程序端进行数据交互。可以使用RESTful API或其他方式,确保小程序能够通过HTTP请求与服务器进行通信。 6. 配置阿里云服务器的安全组 需要确保阿里云服务器的安全组设置允许与微信服务器进行通信,同时也需要保证小程序端可以与服务器进行正常的网络通讯。 通过以上步骤,可以将Python代码成功部署到阿里云服务器,并实现与微信小程序端的交互。在部署过程中需要注意网络安全和服务器性能,确保系统能够稳定运行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值