Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python-Django在登录后重定向到下一个(通用表单视图)_Django_Python 3.x_Django Models_Django Forms_Django Views - Fatal编程技术网

python-Django在登录后重定向到下一个(通用表单视图)

python-Django在登录后重定向到下一个(通用表单视图),django,python-3.x,django-models,django-forms,django-views,Django,Python 3.x,Django Models,Django Forms,Django Views,我正在使用通用表单视图进行身份验证,我正在获取url中的下一个参数,但不幸的是,我不知道如何将其重定向到下一个参数,在成功登录通用表单视图后,这是我的视图 class LoginView( views.AnonymousRequiredMixin, generic.FormView): form_class = LoginForm success_url = reverse_lazy('home') template_name = 'accounts/registered/log

我正在使用通用表单视图进行身份验证,我正在获取url中的下一个参数,但不幸的是,我不知道如何将其重定向到下一个参数,在成功登录通用表单视图后,这是我的视图

class LoginView(
    views.AnonymousRequiredMixin,
    generic.FormView):
form_class = LoginForm
success_url = reverse_lazy('home')
template_name = 'accounts/registered/login.html'
def form_valid(self, form):

    username = form.cleaned_data['username']
    password = form.cleaned_data['password']
    user = authenticate(username=username, password=password)
    if user is not None and user.is_active and user.is_seller:
        login(self.request, user)
        return super(LoginView, self).form_valid(form)
    else:
        return self.form_invalid(form)
我明白了

http://127.0.0.1:8000/accounts/login/?next=/accounts/dashboard/

帮帮我

因此,从本质上讲,您获得的url意味着它试图转到127.0.0.1:8000/accounts/dashboard/,但由于用户需要登录,因此它首先要转到登录页面。本质上,这意味着您的视图由于某种原因没有让用户登录

尝试使用(或扩展)Django的内置LoginForm类()

或者,使用更广泛的解决方案套件,例如django allauth()

您应该使用HttpRedirectResponse: views.py

不要忘记将此调用添加到URL.py中的登录方法:


为了更好地理解请求和响应是如何工作的,您还应该查看一下


您还应该熟悉HttpResponseRedirect,这样您就可以理解HttpResponseRedirect的一个示例。

谢谢,这似乎很好,但当我按照您的建议使用django内置登录表单时,它只是重定向到login\u REDIRECT\u URL,但它应该尝试将用户重定向到下一个GET参数,请帮助我,先生!你的登录地址是什么?会不会是开头少了一条斜线?这将导致它被简单地附加到您当前的URL,并且很可能是您的问题的原因。在我的设置中,LOGIN_REDIRECT_URL='/',因此,请确认,当您使用Django的本机方法时,它不会转到您希望它转到的页面,而是转到LOGIN_REDIRECT_URL?真奇怪。你能用新的查看功能更新你的原始帖子吗?你登录时的URL,以及它重定向你的URL?这是我问的另一个问题,基本上是我们如何重定向到下一个param-it通用视图,所以我没有编辑它,而是创建了一个新的查询,你可以看看-
from django.http import HttpResponseRedirect

def login(request):
    # You logic goes here
    return HttpResponseRedirect('dashboard')

def dashboard(request):
    context = {
        # User information goes here
    }
    return render(request, 'dashboard', context)
path('login', views.login, name='login'),
path('dashboard', views.dashboard, name='dashboard'),