【Django】微信公众号的搭建收获与经验

微信测试平台

测试平台有个坑,今天踩到了…
在这里插入图片描述
这里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 …
开发环境和部署环境,使用一样的版本.这个以后一定要注意…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值