私は、SOのログイン機能と非常によく似たログイン機能を備えたシンプルなWebサイトを構築しようとしています。ユーザーは匿名ユーザーとしてサイトを閲覧でき、すべてのページにログインリンクがあります。ログインリンクをクリックすると、ユーザーはログインフォームに移動します。ログインが成功すると、ユーザーは最初にログインリンクをクリックしたページに戻ります。どういうわけか、現在のページのURLをログインフォームを処理するビューに渡す必要があると思いますが、実際には機能しません。
編集:私はそれを理解しました。現在のページをGETパラメータとして渡してログインフォームにリンクし、次に「次へ」を使用してそのページにリダイレクトしました。ありがとう!
編集2:私の説明は明確ではないようだったので、ここにリクエストされたのは私のコードです:foo.htmlのページにいて、ログインしていないとしましょう。今、foo.htmlにリンクしたいのですがlogin.htmlに。そこでログインすると、foo.htmlにリダイレクトされます。foo.htmlのリンクは次のようになります。
<a href='/login/?next={{ request.path }}'>Login</a>
ここで、次のようなカスタムログインビューを作成しました。
def login_view(request):
redirect_to = request.REQUEST.get('next', '')
if request.method=='POST':
#create login form...
if valid login credentials have been entered:
return HttpResponseRedirect(redirect_to)
#...
return render_to_response('login.html', locals())
そして、login.htmlの重要な行:
<form method="post" action="./?next={{ redirect_to }}">
ええ、それはほとんどそれです、それが明確になることを願っています。