1

更新: まだ与えられた唯一の答えは、私を助けていません. コードはローカル システムでは期待どおりに機能しますが、デプロイされた Python アプリでは機能しません。これは私にとって一連の問題です。この質問を真剣にもう一度見てください。

何が起こっているかを示す単純化されたコードを次に示します。簡略化されたコードが SDK のインタラクティブ コンソールに配置されると、常に が出力されますHello, schott.brianが、デプロイされたアプリでは が出力されるようになりますno match。どうしたの?

user = "schott.brian"
name = "schott.brian"

if user and user == name:
     print "Hello, " + user
else:
     print "no match"

これが私のコードです。if2 番目のチェックに注意してくださいif user and (user == person.user):

user = users.get_current_user()
ID_id = self.request.get("ID", None)
ID_id = ''.join(ID_id.split())
key = db.Key.from_path("PQ", ID_id)
person = PQ.get(key)
if person: #person's ID DOES exist already
     logging.info("6 person %s" % person.user )
     logging.info("6 key %s" % key )
     logging.info("6 ID_id %s" % ID_id )
     logging.info("6 user %s" % user )
     if user and (user == person.user):
          # never get here on gae, but works on sdk
     else:
          # always gets to here by mistake on gae, but works on SDKs
          logging.info("7 user %s" % user )
          logging.info("7 person %s" % person.user )

これはgaeのそのコードのログであり、ユーザーが存在し、(user == person.user)、if句が成功していないにもかかわらずです。なぜか教えてくれますか?2 つのうちの 1 つは本当に gmail.com を含み、もう 1 つは含まないのでしょうか?

2012-07-17 15:39:19.993 6 person schott.brian
I 2012-07-17 15:39:19.993 6 key ag1zfnBhcnRpY2lwb2xschMLEgJQUSILY29kZUJTY2hvdHQM
I 2012-07-17 15:39:19.993 6 ID_id codeBSchott
I 2012-07-17 15:39:19.993 6 user schott.brian
I 2012-07-17 15:39:19.993 7 user schott.brian
I 2012-07-17 15:39:19.994 7 person schott.brian
4

1 に答える 1

7

user.get_current_user()オブジェクトを返します。ユーザーを印刷すると文字列にキャストされるため、次のようなことをしたいかもしれません:

if user and (str(user) == str(person.user)):

しかし実際には、ユーザー オブジェクトの文字列表現ではなく、ユーザー ID を比較する方が適切です。

于 2012-07-17T23:26:44.090 に答える