3

ブラウザを開いて、Djangoサイトにアクセスしようとしています。アカウントからログアウトしているので、ログインページにリダイレクトされます。このページは、GETパラメーターとして使用します。

http://website.com/login/?next=/customer/7/54

ただし、ログイン情報を入力すると、次の場所にリダイレクトされます。

http://website.com/

とはいえ、私は次のことを行おうとしています。

http://website.com/customer/7/54

/ customer / 7/54は、@ login_requiredデコレータがあるビューを指しますが、ログインした後もそのビューを指すと想定していました。何が起こっているのでしょうか。

編集:それで私は気づきました、私は隠された入力タグを持っていました:

    <input type="hidden" name="next" value='/'>

ただし、GETパラメータ'/ customer / 7/54 /をログインテンプレートに渡すにはどうすればよいですか?

4

2 に答える 2

8

編集した質問によると、ログインページで次のパラメータを次のように取得できます。

<input type="hidden" name="next" value="{{ next }}">

標準のdjangoは、変数をテンプレートコンテキストに直接django.contrib.auth.views.login渡します。また、ユーザー認証nextに関するドキュメントをお読みください。

また、redirect_field_nameをビューに渡すことにより、ログイン後にリダイレクトするURLを含むGETフィールドの名前を指定することもできます。デフォルトでは、フィールドはnextと呼ばれます。

しかし、おそらく、これを変更する必要はありません。

于 2012-09-21T20:31:53.997 に答える
1

自分の意見を使っている人のために。テンプレートに「次へ」を送信する必要があります

def login_view(request):
    '''..your logic..'''
    ctx = {'form':form,'next':next}
    return render_to_response('login.html',ctx,context_instance=RequestContext(request))
于 2015-05-01T17:58:30.900 に答える