App Engine Python没有从Django页面接收GET参数值

时间:2012-01-12 14:06:39

标签: python django google-app-engine

我正在尝试从使用Django构建的页面向App Engine服务器发送GET请求。我在Django部分设置参数,但在App Engine中参数值为空。

我在Django端记录了它的值,参数值没问题。

这是我的 Django 代码:

try:
        username = request.session['username']
        params = urllib.urlencode('user', username)
        headers = {"Content-type":"application/x-www-form-urlencoded", "Accept":"text/plain"}

        conn = httplib.HTTPConnection(connections_strings.auth)
        conn.request("GET", connections_strings.auth, params, headers)
        response = conn.getresponse()
        jsonString = response.read()
        return render_to_response('home/index.html', locals(), context_instance=RequestContext(request))

这是 App Engine 代码:

def get(self):
        username = self.request.get('user') # Get the username parameter 
        query_user = UserEntity.all()
        query_user.filter('username = ', username)
        user_data = []
        for user in query_user:
            record = { //Create the JSON.. }
            user_data.append(record)

        self.response.headers['Content-Type'] = 'application/json'
        self.response.out.write(simplejson.dumps(user_data))

正在调用App Engine中的get(self)方法,我在那里放了一条日志消息并打印出来。

所以,正在发生的事情是,在App Engine方面,self.request.get('user')什么都不返回。这很奇怪,我已经从移动端提出了GET请求,并且它完全适用于同样的方法。

任何想法??

谢谢!

1 个答案:

答案 0 :(得分:3)

在HTTP GET方法中,查询参数在URL中传递:

http://example.com?user=foo

request()方法的定义如下:

HTTPConnection.request(method, url[, body[, headers]])

通过这样做:

conn.request("GET", connections_strings.auth, params, headers)

您已经在请求正文中发送了参数。

请改为尝试:

selector = '{}?{}'.format(connections_strings.auth, params)
conn.request("GET", selector, headers=headers)