将返回用户视为“无”

问题描述 投票:0回答:1

因此,我正在创建一个用户确认系统,其中创建代码、存储在会话中并通过电子邮件发送

我在视图中做了一些打印,用于确认代码并激活用户,代码是这样的:

def activeThroughCode(request,):
    form = VerificationForm()
    if request.method == 'POST':
        form = VerificationForm(request.POST)
        if form.is_valid:
            entered_code = request.POST.get('verification_code')

            stored_code = request.session.get('verification_code')
            
            print("Entered Code:", entered_code)
            print("Stored Code:", stored_code)

            username = User.objects.get('username')

            if entered_code == stored_code:
                print(username)
                try:
                    user = User.objects.get(username=username)
                    user.is_active = True
                    user.save()
                    messages.success(request, f'Your account is active with success.')
                    return redirect('login')
                except User.DoesNotExist:
                    messages.error(request, 'Incorrect verification code.')
                    return redirect('login')

               
            else:
                messages.error(request, f"It wasn't possible to confirm your email")

    return render(request, 'activate.html',{'form': form})

当我在表单中输入代码时,我可以通过终端确认输入的代码和存储的代码是相同的,直到这里一切都正常

但是,为了验证我的用户,显然,我需要请求用户激活并保存它,但结果为

 username = User.objects.get('username')

            if entered_code == stored_code:
                print(username)

没有。

我 99% 确定这是唯一的错误,因为我的异常正在打印给我,所以这意味着代码确认实际上正在工作

我的表格:

class   MyUserCreationForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['username','email','password1','password2']

class VerificationForm(forms.Form):
    verification_code = forms.CharField(label='Verification Code', max_length=10)

知道可能出了什么问题吗?

django django-views django-forms email-verification
1个回答
0
投票

代码中的主要问题是尝试使用

User.objects.get('username')
,这是不正确的,因为它不提供查找参数。你应该使用这样的东西
User.objects.get(username=user_name)

© www.soinside.com 2019 - 2024. All rights reserved.