因此,我正在创建一个用户确认系统,其中创建代码、存储在会话中并通过电子邮件发送
我在视图中做了一些打印,用于确认代码并激活用户,代码是这样的:
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)
知道可能出了什么问题吗?
代码中的主要问题是尝试使用
User.objects.get('username')
,这是不正确的,因为它不提供查找参数。你应该使用这样的东西User.objects.get(username=user_name)