Представление, возвращающее пользователя как None
Итак, я создаю систему подтверждения пользователя, в которой создается код, хранится в сессии и отправляется по электронной почте
Я сделал несколько отпечатков внутри представления, которое используется для подтверждения кода и активации пользователя, код такой:
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)
является None.
Я на 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)
Если вы получаете некоторые значения из вашей базы данных. В это время напишите эту строку
model = User
get username from to database
user = User.objects.get(username =username)
в вашем случае
user = User.objects.get(username)--->> that is wrong
у вас ошибка в строке 5:
if form.is_valid:
Это всегда будет возвращать True
, потому что просто проверяет существование метода. Вместо этого должен быть вызов метода:
if form.is_valid():