Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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 url中的下一个参数未显示,但正在django中正确打印_Python_Django - Fatal编程技术网

Python url中的下一个参数未显示,但正在django中正确打印

Python url中的下一个参数未显示,但正在django中正确打印,python,django,Python,Django,这是我的注册视图: def signup(request): next = request.GET.get('next', '') print(next) if request.user.is_authenticated: return redirect('/') else: if request.method == "POST": first_name=request.POST['fir

这是我的注册视图:

def signup(request):
    next = request.GET.get('next', '')
    print(next)
    if request.user.is_authenticated:
        return redirect('/')
    else:
        if request.method == "POST":
            first_name=request.POST['first_name']
            email=request.POST['email']
            password=request.POST['password']
            cpassword=request.POST['cpassword']
            signup_uri = f'/signup?next={next}'

            if password==cpassword:
                if User.objects.filter(email=email).exists():
                    messages.info(request,'Email already in use')
                    return redirect(signup_uri)
                elif User.objects.filter(mobile=mobile).exists():
                    messages.info(request,'Mobile Number already in use')
                    return redirect(signup_uri)
                else:
                    user=User.objects.create_user(first_name=first_name,email=email,password=password)
                    user.save();
                    return redirect(f'/login?next={next}')
            else:
                messages.info(request,'Passwords not matching')
                return redirect('signup_uri')
        
        else:
            return render(request,'signup.html')

我面临的问题是,当我在
def signup
下打印next时,它正确地打印了它,但当它必须重定向时,它会重定向,而不会在url中显示任何作为next的内容。也就是说,
signup\u uri=f'/signup?next={next}'
return redirect(f'/login?next={next}')
将{next}显示为空。可能的原因是什么?任何帮助都将被告知。

根据
signup
方法的定义,仅针对
GET
请求检索
next
参数的值。但是,当您尝试执行
POST
请求时,不会检索
next
参数的值。因此,
next
变量的值被设置为
,因此,
signup\u uri
变量的值也被设置为
“/signup?next=“
以及登录重定向url(
”/login?next=“
)。为了解决这个问题,您的代码应该如下所示

def signup(request):
    next = request.GET.get('next', '')
    print(next)
    if request.user.is_authenticated:
        return redirect('/')
    else:
        if request.method == "POST":
            first_name = request.POST['first_name']
            email = request.POST['email']
            password = request.POST['password']
            cpassword = request.POST['cpassword']
            next = request.POST.get("next", "")
            signup_uri = f'/signup?next={next}'

            if password == cpassword:
                if User.objects.filter(email=email).exists():
                    messages.info(request,'Email already in use')
                    return redirect(signup_uri)
                elif User.objects.filter(mobile=mobile).exists():
                    messages.info(request,'Mobile Number already in use')
                    return redirect(signup_uri)
                else:
                    user = User.objects.create_user(first_name=first_name, email=email, password=password)
                    user.save();
                    return redirect(f'/login?next={next}')
            else:
                messages.info(request, 'Passwords not matching')
                return redirect('signup_uri')
    
        else:
            return render(request, 'signup.html')

下一步=request.POST.get(“下一步”,“下一步”)是您所做的唯一更改。如果是,那么它仍然会给我同样的问题您是否从前端应用程序发送
POST
请求中的
next
参数的值?即使您没有发送任何值,如果没有我进行的修复,问题也不会得到解决。我将在表单中的signup.html
中传递该值。在模板中调试以检查
{{next}的值
POST
请求的参数设置与否。如果
request.GET.next
按预期传递准确值,则可以。如果答案有助于你解决问题,请别忘了给它投票。蒂亚。