Я пытаюсь реализовать функцию регистрации, входа и проверки электронной почты в моем проекте Django. Вот представление проверки электронной почты. Письмо было успешно получено из моего представления регистрации, и представление code_verify показывает правильно:
def code_verify(request):
values={}
global v_msg
global Class
global Email
global Password
global Name
global registered
if request.method=='POST':
if request.POST['vcode']==str(code):
user = User.objects.create_user( username=Email,
first_name=Name[0],last_name=Name[1],email=Email, password=Password)
user.set_password(Password)
user.is_active = True
user.save()
profile1=profile()
profile1.user=user
profile1.Class=Class
profile1.save()
Name=""
Class=""
Email=""
Password=""
registered=True
return redirect('signin',permanent=True)
else:
values['err']=True
values['invalid']="The code is incorrect"
values['email']=Email
return render(request,'signin/email_verification.html',context=values)
Все работает нормально, кроме перенаправления на страницу входа после успешной проверки электронной почты. Проблема в том, что когда я отправляю OTP в представлении code_verify, запрос POST также автоматически отправляется в представление входа. Я не хочу, чтобы он автоматически размещался до того, как я ввел свои учетные данные. Вот мой знак зрения:
def signin(request):
global registered
message={'registered':registered,'pwd_change':pwd_change}
if request.user.is_authenticated:
print("HoUSTON, WE HAVE A PROBLEM")
if request.method=='POST':
user =authenticate(username=request.POST['email'],password=request.POST['pwd'])
if user:
if user.is_active:
login(request, user)
return redirect('home',username=user.username)
else:
message['cred_err']=True
return render(request,'signin/signin.html',context=message)
Вот мой urls.py:
from django.urls import path
from . import views
import string
import random
urlpatterns = [
path('',views.signin,name='signin'),
path('password_reset/',views.password_reset,name='password_reset'),
path('signup/',views.signup,name='signup'),
path('',views.lg_out,name='lg_out'),
path('',views.code_verify,name='code_verify'),
]
Выдает ошибку MULTI DICT KEY VALUE. Пожалуйста, помогите!