3

Python2.7.1のDjango1.3.1でdjango-social-authを使用しています。私はあちこちを探していましたが、Twitter認証(または他のプロバイダー)にカスタムリダイレクトURLを使用する方法を完全に理解することはできません。

プロセスを開始するためのリンクを作成するには、HTMLテンプレートでこのテンプレートタグを使用する必要があることを読みました。

{% url socialauth_begin 'twitter' %}

これは、settings.pyファイルの値を使用して比較的正常に機能しますLOGIN_REDIRECT_URL(ただし、ここで私の質問を参照してください:Twitterは、設定に関係なく、ユーザーを/ en / logind /に移動します)ただし、この特定のケースでは、リダイレクトする必要があります戻ったときにユーザーを特別なURLに移動します。

他の場所で、リダイレクト値を含む変数「next」をテンプレートに渡すか、Twitterの認証URLのパラメーターとして渡す必要があることを読みました。これはどのように行われますか?私のテンプレートはHttpResponseとしてロードされるので、確かにテンプレート値を渡すことはできますが、上記のテンプレートタグでこれらをどのように使用できるかは明確ではありません。

この基本的な質問でごめんなさい。

4

2 に答える 2

7

OK、これは簡単だとわかっていたので、これを聞いても少しばかげています。django-social-authにはこれを行うための特別な規定があると思いましたが、どうやらそれはかなり手動です。ここで終わる他の人のための解決策は次のとおりです。

あなたの見解では:...django.utils.httpからインポートurlquote..。

def my_view(request, ...):
  ...
  redirect_url = urlquote("http://your_required_redirect_url/")
  ...
  return render_to_response('your_template.html', { 'redirect_url' : redirect_url })

'your_template.html'の場合:

...
Login with <a href="{% url socialauth_begin 'twitter' %}?next={{ redirect_url }}">Twitter</a>
...
于 2011-12-08T10:51:30.233 に答える
0

私はこのコードを使用しています:

<a href="{% url socialauth_begin 'twitter' %}?next={{ request.get_full_path }}">Login with Twitter</a>

このコード行は同じページにリダイレクトします。ヘッダーに設定することもできます。

于 2013-01-05T22:13:24.590 に答える