2012-03-22 8 views
4

私は、http取得リクエストからキーを取得し、データストアから何かを取得するために標準的なコード行を使用していますが、前に遭遇した。これは、ライブ(デプロイされた)バージョンでのみ発生します.developサーバー上でコードを実行する際に問題はありません。BadKeyError:無効な文字列キーのパディングが正しくありません

コードスニペット:

imgId = self.request.args.get("img_id") 
    imageInfo = db.get(imgId) 

及び誤り例:

BadKeyError: Invalid string key ahFjeWJlcm5hdXRzcHJvamVjdHINCxIFSW1hZ2UY1oYDDA=. Details: Incorrect padding 

Iは右db.get前imgIdの値を記録した場合、それは「添付せずに(正しいです= "デバッグメッセージから)。誰がこれを引き起こしているかも知っていますか?

+0

入力文字列とテスト文字列を比較した結果を記録しようとしましたか?明らかにまったく同じではありません。そうでないと、このエラーは発生しません。 –

+0

さて、この場合にgetリクエストに渡される実際の値には、何らかの理由でプレフィックスが付けられた%20空白が追加されています。この空白はget要求のどちらかの端に表示されません。なぜそれが切り裂かれているのかについての損失... – Cerzi

+0

問題のコードを見ることなく助けてくれる方法がないので、大声で考えていると思います。 –

答えて

7

私はURLエンコードを推測しています。 try:

imgId = urllib.unquote(self.request.args.get("img_id")) 

多分スペースですか?
試し:

imgId = urllib.unquote(self.request.args.get("img_id")).strip() 
0

それはURLエンコードではない場合は、多分それはargs変数とは何かを持っています。

それはHTTPのGETリクエストの場合:それはHTTPのPOSTリクエストなら

imgId = self.request.GET.get("img_id") 
imageInfo = db.get(imgId) 

imgId = self.request.POST.get("img_id") 
imageInfo = db.get(imgId) 
+0

私はTipfyを使っているので、args変数を使っているはずです。 – Cerzi

0

それは私の神社レンダリングコードとパッシングに登場する、単一の空白文字の愚かなケースでした20%に沿って。すべて申し訳ありません!

+3

ああ、ちょうど私が言ったように? –

関連する問題