此地理编码代码在本地工作,但不在服务器中,它以self.request.get('address')
的形式获取地址,并从get_lat_long(address)
函数返回值ndb.GeoPt()
。列表索引错误超出范围在GAE
所以,我怎么就出现错误:
Traceback (most recent call last):
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1535, in __call__
rv = self.handle_exception(request, response, e)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1529, in __call__
rv = self.router.dispatch(request, response)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1102, in __call__
return handler.dispatch()
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 572, in dispatch
return self.handle_exception(e, self.app.debug)
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "/base/data/home/apps/s~map-jobs/2.371278632227250958/main.py", line 453, in post
profile.geopoint = get_lat_long(self.request.get('address'))
File "/base/data/home/apps/s~map-jobs/2.371278632227250958/main.py", line 17, in get_lat_long
lat = data['results'][0]['geometry']['location']['lat']
IndexError: list index out of range
有了这个代码:
def get_lat_long(address):
address = cgi.escape(address.replace(" ","+"))
sensor = "true"
url = "http://maps.googleapis.com/maps/api/geocode/json?address=" + address + "&sensor="+ sensor
result = urlfetch.fetch(url)
data = json.loads(result.content)
lat = data['results'][0]['geometry']['location']['lat']
long = data['results'][0]['geometry']['location']['lng']
return ndb.GeoPt(str(lat) +","+ str(long))
什么是谷歌与应用引擎服务器写这个的正确方法是什么?
尝试打印'data ['results']'看看它是否真的存在 – aIKid
错误非常明显:'data ['result']'为空。 –
@PaoloMoretti是的,你刚刚编辑它,你没有说过什么是错误的,我说的是同样的事情。 – aIKid