0

私は現在、ページをリロードせずにログイン要求を送信して処理するモーダルログインボックスに取り組んでいます。ログインに成功すると、次の2つの結果が考えられます。

  1. ユーザーは、ログインしたユーザーのみがアクセスできるリンクを事前にたどりたいと考えていました。ユーザーは、ログイン後にそのページにリダイレクトされます。

  2. ユーザーが、ログインしたユーザーのみがアクセスできるAJAX呼び出しをトリガーする要素をクリックしました。ログイン後にajax呼び出しがもう一度発生します。

テンプレート

{% load url from future %}
<form action="{% url 'login' %}" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Login" />
</form>

今、私はこれを行う方法がわかりません。私の主な問題は、ログイン後にどのURLを処理する必要があるかを判断することです。ログインに成功した後、どのURLが現在処理キューにあるかを知るにはどうすればよいですか?

4

1 に答える 1

1

ログインページにリダイレクトされると、通常、リクエストとともに次のパラメータが渡されます。これは ajax リクエストにも当てはまります。非表示の入力フィールドをフォームに追加して、ログに記録されていないユーザーが取得しようとした URL を「次の」パラメーターに渡すだけです。

{% load url from future %}
<form action="{% url 'login' %}" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Login" />
<input style="hidden" name="next" value="some_url">
</form>

次に、標準のログイン ビューは HttpResponseRedirect を返しますが、これは、ajax のようなログインの場合、必要なものではありません。そのため、ログインビューを自分で作成し、その動作をオーバーライドする必要があります。

于 2012-05-21T10:58:46.373 に答える