用django做微信开发

调用了图灵机器人的接口,但微信开发出现了问题,后台用的django,但response怎么也返回不到微信客户端,又不知道该怎么debug。在这里贴出urls.py和views.py,希望有高人可以帮我找找茬。

urls.py

from django.conf.urls import patterns, include, url
from littesnail.views import handleRequest

urlpatterns = patterns(‘‘,
    # Examples:
    url(r‘^$‘, handleRequest),
)

views.py:

# -*- coding: utf-8 -*-
from django.http import HttpResponse
from django.template import RequestContext, Template
from django.views.decorators.csrf import csrf_exempt
from django.utils.encoding import smart_str, smart_unicode
import xml.etree.ElementTree as ET
import urllib,urllib2,time,hashlib
import sys
import json

TOKEN = "12**56"
API_KEY = ‘bc192acc7*****c19342f5f0274‘

@csrf_exempt
def handleRequest(request):
    if request.method == ‘GET‘:
        response = HttpResponse(checkSignature(request),content_type="text/plain")
        return response
    elif request.method == ‘POST‘:
        response = HttpResponse(responseMsg(request),content_type="application/xml")
        return response
    else:
        return None

def checkSignature(request):
    global TOKEN
    signature = request.GET.get("signature", None)
    timestamp = request.GET.get("timestamp", None)
    nonce = request.GET.get("nonce", None)
    echoStr = request.GET.get("echostr",None)

    token = TOKEN
    tmpList = [token,timestamp,nonce]
    tmpList.sort()
    tmpstr = "%s%s%s" % tuple(tmpList)
    tmpstr = hashlib.sha1(tmpstr).hexdigest()
    if tmpstr == signature:
        return echoStr
    else:
        return None

def responseMsg(request):
    #解析微信客户端传来的XML的Post信息
    rawStr = smart_str(request.request.body)
    msg = paraseMsgXml(ET.fromstring(rawStr))
    queryStr = msg.get(‘Content‘,‘You have input nothing~‘)
    raw_TULINURL = "http://www.tuling123.com/openapi/api?key=%s&info=" % API_KEY
    TULINURL = "%s%s" % (raw_TULINURL,urllib2.quote(queryStr))
    req = urllib2.Request(url=TULINURL)
    result = urllib2.urlopen(req).read()
    hjson=json.loads(result)
    length=len(hjson.keys())
    content=hjson[‘text‘]
    if length==3:
        replyContent= ‘robots:‘ +content+hjson[‘url‘]
    elif length==2:
        replyContent= ‘robots:‘ +content
    else:
        return "please input again."
    return getReplyXml(msg,replyContent)

def paraseMsgXml(rootElem):
    msg = {}
    if rootElem.tag == ‘xml‘:
        for child in rootElem:
            msg[child.tag] = smart_str(child.text)
        return msg

def getReplyXml(msg,replyContent):
    extTpl = ‘‘‘<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>‘‘‘;
    extTpl = extTpl % (msg[‘FromUserName‘],msg[‘ToUserName‘],str(int(time.time())),‘text‘,replyContent)
    return extTpl
时间: 2024-10-20 14:40:43

用django做微信开发的相关文章

django+python微信开发

django+python微信开发之一-准备工作 django+python微信开发之二-封装消息类 django+python微信开发之三-消息处理类 django+python微信开发之四-最后的工作:消息服务类

django+sae微信开发-简单的鹦鹉学舌功能

转自个人博客:http://ningning.today/2015/02/09/python/django-sae%E5%BE%AE%E4%BF%A1%E5%BC%80%E5%8F%91%EF%BC%8D%E7%AE%80%E5%8D%95%E7%9A%84%E9%B9%A6%E9%B9%89%E5%AD%A6%E8%88%8C%E5%8A%9F%E8%83%BD/ 网上已经有一些优秀的教程了,但是大多数基于web.py,最近学了点django,就用django写个简单的demo. 准备工作 基

php微信支付(仅pc端扫码支付模式二)详细步骤.----仅适合第一次做微信开发的程序员

本人最近做了微信支付开发,是第一次接触.其中走了很多弯路,遇到的问题也很多.为了让和我一样的新人不再遇到类似的问题,我把我的开发步骤和问题写出来,以供参考. 开发时间是2016/8/10,所以微信支付的版本也是对应此时的版本. 一.前期准备: 首先你们公司开通微信支付功能后,会收到一份邮件,里面有账户相关信息,一般有:微信支付商户号,商户平台登录帐号,商户平台登录密码,申请对应的公众号,公众号APPID. 1.下载demo:用上面信息登陆“微信商户平台”,>>>(右上角开发文档)>

【微信开发】网页授权多域名解决方案

在做微信开发的时候,会遇到这样的场景:一个公众号,会有多个业务:官网.论坛.商城等等 网页授权是只能一个域名,那么问题来了?这怎么搞? 答案就是: 做一个中转服务! 域名1: www.test.com 域名2: bbs.test.com 这时候,再解析一个二级域名:code.test.com 作为中转授权域名 并在微信公众平台后台网页授权域名地方填写这个 中转域名 www.test.com   授权代码改为: header("location:http://code.test.com/code.

微信开发束缚了你的思想

最近通过在新浪云上建立了自己的应用,进行了微信的开发.渐渐对微信开发由开始的好奇变成了一种轻视的态度(当然此处不乏装逼的嫌疑.)下面谈谈自己对微信开发的一点理解,希望对即将进行微信开发的人员有一点帮助. 微信开发的关键就是有一个可以线上调试的域名.空间.之前,在网上搜索各种免费的域名.空间啊,然后就是各种注册,最后还是没得到.有的获得了域名.空间,但是速度那是相当的慢啊.恰巧公司同事有在做微信开发的,下班的时候就询问了一下,如何获得域名.空间啊.然后就知道了新浪云,可以以较少的费用获取新浪云,当

微信开发——通过授权获取用户的基本信息

这年头,招个人不容易,现在大小活都得干了, 现在干起了微信开发这活儿,顺带写点经验. 上一回,写了篇文章是封装微信接口消息的处理的,具体可以看:实现虽易,写好不易--小玩意也能体现编码功力,微信消息处理框架发布 现在来谈谈如何获取通过微信提供的接口来获取微信用户所写的基本信息,包括国家,省,市,昵称.当然,要获取用户的信息,是要经过用户授权.关于这部份的文档,点击这里可以看到. 我要说的是具体的操作. 一.填写授权回调页面的域名 在这里填的是 wx.alinq.org.在获得用户的授权后,会跳转

微信开发 提示 Redirect_uri参数错误解决方法

由于之前合作的后端都是很有经验的, 做微信开发的时候他们已经把各种配置都搞好了,这是我第一次遇到这个问题=-= 1.最开始我以为是我没有公众号的开发者权限,于是我去微信公众号设置自己的账号是开发者账号.但是问题并没有被解决. 2.没有配置网页授权 可以查看微信开发者文档授权章节来排除问题. 我发现微信开发在线调试接口没有配置,又去搞了搞,问题依然没有被解决. 3.网页授权的域名跟 Redirect_uri 所指向的页面的域名不一致 微信默认使用的端口是80端口,由于该端口被公司官网占用,后端使用

Java微信开发_Exception_01_The type org.xmlpull.v1.XmlPullParser cannot be resolved. It is indirectly referenced from required .class files

一.源码: package com.souvc.weixin.util; import java.io.InputStream; import java.io.Writer; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.dom4j.Document; import org.dom4j.E

微信开发,access_token,时间上没有过期,但已失效的问题

做微信开发的人都知道,access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token,我前几天做项目的时候,偶尔会有好多用户的信息获取不到,还有生成二维码报错,打印log才发现,access_token已经失效,但access_token的有效期是7200S也就是两个小时,但我的token失效的时候才30分钟左右,其他地方也没有单独调用获取token的接口,让人匪夷所思. 实在没有办法了,只能用一个迂回的招,就是调用微信一个没有次数限制的接口,把acc