App Engine Python未从Django页面接收GET参数值
我正在尝试从一个用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 个回答
3
在HTTP的GET方法中,查询参数是通过网址传递的:
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)