0
私のコードでは、現在@login_requiredデコレータを使用しています。私が知っている限り(URLで見ることができる)、これはユーザーが行っていた元のページを保持している次のパラメータを自分のログインビューに渡します。 ユーザーの資格情報を確認した後、私は彼を元のページにリダイレクトしようとしていますが、その方法を理解できません。私はこれが本当に簡単でなければならないと確信していますが、私はかなり長い間それに固執していました。私はキーボードを捨てる前に助けを求めなければなりませんでした。 マイビューのコードは次のように:あなたがログイン成功をチェックした後Django - ログイン成功後にユーザーを "next"パラメータにリダイレクト
from django.contrib.auth import login as auth_login, authenticate
def login(request):
form_class = LoginForm
if request.method == 'POST':
form = form_class(data=request.POST)
if form.is_valid():
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
auth_login(request, user)
return redirect(?????????)
else:
#Error message
return render(request, 'login.html', {'form':form_class})
、それは働きます!私はそれが何かばかげてやりやすいことを知っていた。どうもありがとう! –
クエリー文字列に渡された古いURLには盲目的にリダイレクトしたくないことに注意してください。これにより、フィッシング攻撃者は基本的に、ログイン後にユーザーを任意のドメインにリダイレクトすることができます。それが懸念される可能性がある場合は、Django自身のauthパッケージに組み込まれている方法が 'next_url'をどのように浄化するかを見直したいかもしれません。 [Django Authソースコード](https://github.com/django/django/blob/master/django/contrib/auth/views.py)の 'get_redirect_url'関数を参照してください。 – jonpa