我正在使用标准的几行代码从http get请求中检索密钥并使用它从数据存储区获取内容,但遇到了我以前没有遇到过的问题。这只发生在实时(已部署)版本上 - 在开发服务器上运行代码时没有问题。
代码段:
imgId = self.request.args.get("img_id")
imageInfo = db.get(imgId)
错误示例:
BadKeyError: Invalid string key ahFjeWJlcm5hdXRzcHJvamVjdHINCxIFSW1hZ2UY1oYDDA=. Details: Incorrect padding
如果我在db.get之前记录imgId的值,它是正确的(没有从调试消息中附加“=”)。有谁知道可能导致这种情况的原因?
答案 0 :(得分:7)
我在猜网址编码。 尝试:
imgId = urllib.unquote(self.request.args.get("img_id"))
也许是空格?
尝试:
imgId = urllib.unquote(self.request.args.get("img_id")).strip()
答案 1 :(得分:0)
如果不是网址编码,那么它可能与args
变量有关。
如果是HTTP GET请求:
imgId = self.request.GET.get("img_id")
imageInfo = db.get(imgId)
如果是HTTP POST请求:
imgId = self.request.POST.get("img_id")
imageInfo = db.get(imgId)