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