2个相同代码之间的区别

Difference between 2 identical codes

我正在尝试对 HTTP 响应进行故障排除,一个代码工作正常,但另一个代码返回 ValueError 它们是相同的代码,我并排查看了 1 小时,但我做不到找出错误代码有什么问题这真的很烦我。

工作代码:`

from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib import auth

def signup(request):
    if request.method == 'POST':
        if request.POST['password1'] == request.POST['password2']:
            try:
                user = User.object.get(username=request.POST['username'])
                return render(request, 'accounts/signup.html', {'error':'Username in use'})
            except User.DoesNotExist:
                User.objects.create_user(request.POST['username'], password=request.POST['password1'])
                auth.login(request.user)
                return redirect('home')
    else:
        return render(request, 'accounts/signup.html')

def login(request):
    return render(request, 'accounts/login.html')

def logout(request):
    return render(request, 'accounts/signup.html')

错误代码:

from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib import auth

def signup(request):
 if request.method =='POST':
    if request.POST['password1'] == request.POST['password2']:
        try:
            user = User.object.get(username=request.POST['username'])
            return render(request, 'accounts/signup.html', {'error':'Username in use '})
        except User.DoesNotExist:
            User.objects.create_user(request.POST['username'], password=request.POST['password1'])
            auth.login(request.user)
            return redirect('home')
        else:
            return render(request, 'accounts/signup.html')

def login(request):
    return render(request, 'accounts/login.html')

def logout(request):
    return render(request, 'accounts/signup.html')

`

 else:
            return render(request, 'accounts/signup.html')

因此,如果这段代码不是 post,而是第一段代码中的 GET 请求,它将 return 网页 signup.html。但是在第二个中,else 语句甚至不在 if 之下。