2

Facebook認証にdjangoのsocial_authを使用しています。ユーザーがFacebookを使用してログインしたら、トークンにアクセスしようとしているので、アプリはユーザーの友達やニュースフィードの内容を取得することができます。ただし、そのトークンを取得するのに問題があります。以下は私が持っているものです。{{instance}} がテンプレートに表示されますが、{{token}} を追加すると、'QuerySet' オブジェクトに属性 'tokens' がないというエラーが表示されます。生成されたトークンを取得するにはどうすればよいですか?

見る

def friends(request):   
    instance = UserSocialAuth.objects.filter(user=request.user).filter(provider='facebook') 
    token = instance.tokens
    return render_to_response('reserve/templates/friends.html', {'token':token, 'instance':instance},
        context_instance=RequestContext(request))

テンプレート

{{instance}}
<br>
{{token}}
4

1 に答える 1

2

エラーはそれをすべて示しています: aQuerySetは、検索したもののコレクションです (この場合はUserSocialAuth)。そのモデルでフィールドを取得するには、コレクションを反復処理する必要があります。

tokens = [x.tokens for x in instance]

別の方法として、フィルターが正確に1 つのインスタンス (ゼロでも 2 つ以上でもなく)を返すことが確実な場合は、get代わりにfilter次のように使用できます。

instance = UserSocialAuth.objects.get(user=request.user, provider='facebook') 
token = instance.tokens

ただし、1 つのプロバイダがやなどの複数のトークンを返す場合があるため、必要なトークンを選択するか、適切にフォーマットする必要があります。oauth_tokenoauth_token_secret

于 2012-11-27T03:08:56.097 に答える