python - Django - 成功登录后将用户重定向到 "next"参数

标签 python django django-forms django-authentication django-login

在我的代码中,我目前正在使用@login_required 装饰器。据我所知(并且可以在 URL 中看到),这会将下一个参数传递到我的登录 View ,该参数包含用户所在的原始页面。 检查用户的凭据后,我试图将他重定向到原始页面,但我不知道该怎么做。我敢肯定这一定非常简单,但我已经坚持了很长一段时间,在扔掉键盘之前我不得不寻求帮助。 我的 View 代码如下:

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})

最佳答案

检查是否成功登录后,您只需执行以下操作:

next_url = request.GET.get('next')
if next_url:
    return HttpResponseRedirect(next_url)
else:
    return render(request, 'main/main.html')

关于python - Django - 成功登录后将用户重定向到 "next"参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44807849/

相关文章:

没有 View 的Django URL conf - 链接到另一个域

Django Celery Elastic Beanstalk supervisord 没有这样的过程错误

python - DjangoRestFramework : AttributeError: 'str' object has no attribute '_meta'

python - 在django中将注册表单填写到数据库后如何存储用户选择的单选按钮值?

Django:如何迭代表单集并访问清理过的数据?

python - Django 如何修改 MultipleChoiceField 的复选框标签?

python - 无法从不同路径导入位于根目录的 Python 模块

python - 我们如何找出某些 uuencoded 文件无法使用 Python 正确解码的原因?

python - 如何更改 Pandas 图中 fiddle 图的边框颜色?

python - 从文件恢复注册表