2011-08-23 28 views
2

我试图从数据存储使用从查询字符串传递的键获取Model对象。然而,在最近,我将restaurantProfile.html中的文件命名为restaurant_profile.html时,它在那之前起作用了。我不知道哪个部分出了问题导致了问题。查询字符串错误“int()无效的基数为10”

我的餐厅钥匙应该包含钥匙。不过,从GAE日志,我已经设置自定义调试,看看在餐厅钥匙传递给我的处理程序(结果)包含:

GAE Log: 
Restaurant Key = <bound method Restaurant.key of <persistence.model.Restaurant object at 0x5cd3c5acd5768900>> 

谁能告诉我什么是错了这里?餐厅的钥匙似乎没有传递给处理程序。

<a href="/restaurant_profile?restaurant_key={{ key }}"> 

处理类:

class RestaurantProfileHandler(webapp.RequestHandler): 
def get(self): 
    restaurant_key = self.request.GET.get(u'restaurant_key') 

    logging.debug('Restaurant Key = %s', restaurant_key) 

错误: “无效字面对于int()与基座10” 为以下:

def get_RestaurantDetails(restaurant_key): 
    if restaurant_key: 
     restaurant = db.Key.from_path('Restaurant', int(restaurant_key)) 
     return db.get(restaurant) 

代码以检索键:

for restaurant in foundRestaurants: 
      result_data[restaurant.key] = restaurant 

问题通过以下解决:

key = restaurant.key().__str__() 
      result_data[key] = restaurant 
+0

你能告诉我们在哪儿生成密钥的代码?你的日志文件说你传递了一个方法给你模板,而不是整数的关键。也许你在生成密钥时忘记了一些“()”。 – rocksportrocker

+0

@ rocksportrocker,这是奇怪的部分。它在之前工作。而餐厅对象是有效的,因为它可以显示在结果页面上。在结果页面上,它会调用我想要传递密钥的页面。我在最后一节添加了代码。 – MrCooL

+0

@rocksportrocker,你是对的。关键是错误地通过了。因为这个开发是通过GitHub更新的,所以这部分不是由我完成的。但是,我意识到从产生密钥的部分来看,密钥是错误的。好抓住! ;) – MrCooL

回答

1

问题通过以下解决:

key = restaurant.key().__str__() 
      result_data[key] = restaurant 
0

Can anyone tell me what's got wrong here?

它酷似它说:restaurant_key是一种方法。那么你不能打电话给int();您是否打电话给int()结果致电restaurant_key()

至于为什么restaurant_key是一个方法,那么,这就是self.request.GET.get(u'restaurant_key')返回。也许你应该重新阅读文档...

相关问题