1

これが私のコードです

 def subscribe_current_user(self):
        user1 = SocialNodeSubscription(parent=self.key)
        user1.subscribed = True
        current_user = users.get_current_user()
        logging.error(current_user)
        if current_user:
            user1.user=current_user
        else:
            raise users.UserNotFoundError

        user1.put()

問題は、ログインしていても get_current_user が None を返すことです。フィールド user1.user に None を格納し、ログコンソールに None を出力します。

どうすればそれを解決できますか?

4

3 に答える 3

1

login: requiredハンドラーの app.yaml で定義したか、またはユーザーが明示的にログインできるようにログイン URL を提供しましたかusers.create_login_url()

どこかで Google にログインしていても、users.get_current_user() はユーザー オブジェクトを返しません。

于 2012-07-07T09:57:52.167 に答える
1

似たような質問をたくさん見ました。

この行を別の方法で考えると役立ちます...

ユーザー = users.get_current_user()

この行は、ブラウザやキャッシュ内で高低を検索して情報を取得し、それを適切なユーザー オブジェクトに配置するわけではありません。users クラスを使用して、ユーザーがアプリにログインしているかどうかを確認するだけです。つまり、users クラスを使用してユーザーをログに記録していない場合、このコード行は意図したとおりに実行されない可能性があります。

通常 get_current_user() メソッドに従うべき重要なコード:

if user:
        greeting = ('Welcome, %s! (<a href="%s">sign out</a>)' %
                    (user.nickname(), users.create_logout_url('/')))
    else:
        greeting = ('<a href="%s">Sign in or register</a>.' %
                    users.create_login_url('/'))

self.response.out.write('<html><body>%s</body></html>' % greeting)
于 2014-12-14T18:08:29.063 に答える
0

私は信じていた、あなたはきっとこれを輸入している、

google.appengine.api インポート ユーザーから

また、ログイン時にdjangoの「ユーザー」モデルを本当に認証していますか?

于 2012-07-07T10:00:01.843 に答える