2012-04-04 13 views
2

ソーシャル認証をインストールして設定した後、ちょっと遊んでいます。私はドキュメントを読んで、それを実行するためにサンプルプロジェクトを使用しました。Djangoの特定のプロバイダをテンプレートで取得するにはどうすればよいですか?

これまでは、特定のプロバイダに関する情報を取得する方法がわかりませんでした。サンプルプロジェクトではtemplatetagsは常にこの方法を使用しています。

{% for type, accounts in social_auth.associated.items %} 
    {% for account in accounts %} 
     {{account.provider}} is connected. 
    {% endfor %} 
{% endfor %} 

私は今、何をしたいのか、すべてのプロバイダを一覧表示する、誰かが(すなわち。)のFacebookに自分のアカウントを接続しているかどうかをチェックされていません。私はsocial_auth.associated.itemsは「Facebookは」その後、account.providerのすべての値を持つリストになり(type,account)のタプルを、含まれていることを知っている上の例から

if user==connected_to_facebook 
    provide some functionality 
endif 

:その方法は、私はこのような何かを行うことができます。

{% if "facebook" in social_auth.associated.items.accounts.provider %} 

れ、明らかに、仕事に行くのではありません。私の心に来る何

はこれです。私はこれがうまくいくと思いますが、私は後に結果を返しません:

{% if "facebook" in social_auth.associated.items[1].provider %} 

私はこれを行うことができますDjangoのいくつかの機能はありますか?多分私は行方不明の特別なtemplatetagですか?または、この機能はすでにsocial_authに組み込まれていて、何とかドキュメントを見逃していましたか?または、私の最悪の疑惑は、それは本当に本当に明らかなのですか?私はちょうど...

何か助けを大歓迎。確かに多くの意味がありますが、それでもどこにもつながらない

{'not_associated': {}, 'backends': {'oauth2': ['facebook']}, 
'associated': {'oauth2': [<UserSocialAuth:testuser>]}} 

答えて

3

は「social_authは」タプルの内部にいくつかのタプルではない、それはdictionairyです。だから私は辞書がこのようになっていることが、まだ自分のアカウントに関連していないユーザーを見ていた、と:

{'not_associated': {'oauth2': ['facebook']}, 'backends': {'oauth2': ['facebook']}, 
'associated': {}} 

今私は何かの役に立つが見つかりました:

{% if "facebook" in social_auth.not_associated.oauth2 %} 
{% else %} 
    provide facebook functionality 
{% endif %} 

に動作すること。あなたが知る必要があるのは、あなたが探しているバックエンドの認証のタイプです。それがsocial_authのnot_associatedフィールドにないことを確認してください。

0

誰かがここにprovidersが、私はそこにする必要がありますように思え["Facebook", "Twitter"]

{% for p in providers %} 
    <h2>Link {{ p }} Account</h2> 
    <p>Use your {{ p }} account to log in 
    {% if p|lower in social_auth.not_associated %} 
     <a href="{% url socialauth_associate_begin p|lower %}?next={{ request.path }}" class="off">No</a> 
    {% else %} 
     {% for item in social_auth.associated.all %}{% if item.provider == p|lower %} 
     <a href="{% url socialauth_disconnect_individual p|lower item.id %}" class="on">Yes</a> 
     {% endif %}{% endfor %} 
    {% endif %} 
    </p> 
{% endfor %} 

などに渡しているリストである私が思いついたハック-yのコードは、だ、切断URLを作成する必要がある場合にはこれを行う代わりに関連するアカウントの辞書がありましたが、わかりませんでした。ユーザーが自分のアカウントを2回認証した場合に何が起こるかは不明です。

関連する問題