文章目录
微信测试平台
测试平台有个坑,今天踩到了…
这里URL是不能带端口的…虽然开发平台上写的只能80端口…但是这里带上就会设置失败…
使用Django实现后端功能…
因为是在购买的服务器上运行的…
所以最开始一直用VIM.实在是用不惯,后来还是使用Ubuntu+Pycharm进行了开发
为此还专门去搭建了Git服务器…
搭建Git服务器
安装
yum install -y git
-y,是表示yes…这样就可以省去下面的确认步骤了…
git的服务,也是基于ssh的,所以ssh的服务一定要有
如果是非22端口的git clone(我的不是22端口的)
git clone ssh://git@ip地址:端口/路径/xx.git
添加git用户
adduser git
添加用户来运行git
passwd git
修改密码
创建目录以及存储权限
sudo mkdir /home/git/WeChat
sudo chown git:git /home/git/WeChat
sudo chmod 755 /home/git/WeChat
创建一个Git仓库以及初始化
切换到git用户并建立服务器仓库
su git
cd /home/git/WeChat
初始化仓库
初始化一个仓库名称为alloySQL
git init --bare WeChat.git
然后就可以进行git clone 了
Git路径
Git路径,就是IP地址+端口号+绝对路径…
实现复读机的功能(就是你发啥公众号给你回啥的功能)
from django.shortcuts import render
# Create your views here.
from django.http.response import HttpResponse, HttpResponseBadRequest
from django.views.decorators.csrf import csrf_exempt # 解除csrf验证
from wechat_sdk import WechatConf
from wechat_sdk import WechatBasic
import logging
import json
import hashlib
import xmltodict
import time
import urllib
conf = WechatConf( # 实例化配置信息对象,写自己的配置信息....
token='******', # 服务器配置-Token
appid='wx****21c975', # 公众号开发信息-开发者ID
appsecret='7****d1beff2b', # 公众号开发信息-开发者密码
encrypt_mode='normal', # 服务器配置-明文模式
encoding_aes_key='9gTzrvCIHcGT1cYcOt7LUIUy5aVAGoHbDM4mxODIvH1' # 服务器配置-EncodingAESKey
)
@csrf_exempt # 去除csrf验证
def wechat_token(request):
signature = request.GET.get('signature') # 获取请求信息
timestamp = request.GET.get('timestamp')
nonce = request.GET.get('nonce')
wechat_instance = WechatBasic(conf=conf) # 实例化微信基类对象
if not wechat_instance.check_signature(signature=signature, timestamp=timestamp, nonce=nonce): # 检查验证请求的签名
return HttpResponseBadRequest('Verify Failed')
else:
if request.method == 'GET':
return HttpResponse(request.GET.get('echostr', None)) # 返回请求中的回复信息
if request.method=='POST':
try:
xml = request.body # 今天这里本来使用的是request.data...结果提示出问题....
req = xmltodict.parse(xml)['xml']
msg_type = req['MsgType']
if 'text' == msg_type:
resp = {
'ToUserName': req['FromUserName'],
'FromUserName': req['ToUserName'],
'CreateTime': int(time.time()),
'MsgType': 'text',
'Content': req['Content'],
}
xml = xmltodict.unparse({'xml':resp})
logging.debug(xml)
return HttpResponse(xml)
else:
resp = {
'ToUserName': req['FromUserName', ''],
'FromUserName': req['ToUserName', ''],
'CreateTime': int(time.time()),
'MsgType': 'text',
'Content': 'I LOVE PYTHON'
}
xml = xmltodict.unparse({'xml':resp})
logging.debug(xml)
return HttpResponse(xml)
bug ‘WSGIRequest’ object has no attribute 'data’的解决…
request.data…
'WSGIRequest' object has no attribute 'data'
这个这次的解决办法是改成了body…
网上说的方法
MIDDLEWARE_CLASSES 和MIDDLEWARE的不同
但是Ubuntu上装的1.8.7另一个是1.8.9的.没有受到这个的影响…
但这也是一个提醒…居然开发环境和部署的环境软件版本不一样.
查询到了,在1.10后就修改了…setting.py里成了MIDDLEWARE而不是之前的CLASSES …
开发环境和部署环境,使用一样的版本.这个以后一定要注意…