尝试使用Google App Engine从单个条目检索数据到单个页面时,我收到以下错误,例如foobar.com/page/1将显示来自id 1的所有数据:
ValueError: invalid literal for int() with base 10
以下是文件:
Views.py
class One(webapp.RequestHandler):
def get(self, id):
id = models.Page.get_by_id(int(str(self.request.get("id"))))
page_query = models.Page.get(db.Key.from_path('Page', id))
pages = page_query
template_values = {
'pages': pages,
}
path = os.path.join(os.path.dirname(__file__), 'template/list.html')
self.response.out.write(template.render(path, template_values))
Urls.py :
(r'/browse/(\d+)/', One),
错误:
Traceback (most recent call last): File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py", line 501, in __call__ handler.get(*groups) File "/Volumes/foobar/views.py", line 72, in get id = models.Page.get_by_id(int(str(self.request.get("id")))) ValueError: invalid literal for int() with base 10: ''
答案 0 :(得分:2)
将self.request.get("id")
更改为仅id
,它已经传递给您的get
处理程序。
您拥有的代码仅适用于/browse/1/?id=1
答案 1 :(得分:1)
我不太确定你在这里要做什么。第一行:
id = models.Page.get_by_id(int(str(self.request.get("id"))))
返回一个Page对象,其中包含从查询字符串中获取的ID。要使其与传入的参数一起使用,请将其更改为:
id = models.Page.get_by_id(int(id))
Odder是第二行:
page_query = models.Page.get(db.Key.from_path('Page', id))
这不返回查询 - 它返回一个页面对象,如果用'int(id)'替换'id'与第一行完全相同。你想在这里实现什么目标?
答案 2 :(得分:0)
我的一个代码中出现了类似的错误。我只是做了一个简单的黑客攻击,首先将其转换为十进制,然后将其转换为int int(Decimal(str(self.request.get("id"))))
答案 3 :(得分:0)
错误(因为我确定你知道 - 或者应该知道,因为它似乎已经在编程中走得很远)意味着你正在键入/读取一个应该有基数10的无效文字(无效字符)值(即0-9数字)。