Как решить проблему ValueError : Данное имя пользователя должно быть установлено
Я пытаюсь зарегистрировать пользователя с помощью Python Django. Валидация осуществляется с помощью JavaScript. Когда пользователь вводит свои данные и нажимает кнопку регистрации, данные сохраняются в базе данных. Предположим, если пользователь нажмет на кнопку регистрации, не введя свои данные, я получу ошибку, как показано ниже.
ValueError at /Accounts/CandidateRegister/
The given username must be set
Request Method: POST
Request URL: http://127.0.0.1:8000/Accounts/CandidateRegister/
Django Version: 4.0.2
Exception Type: ValueError
Exception Value:
The given username must be set
Exception Location: C:\job\venv\lib\site-packages\django\contrib\auth\models.py, line 137, in _create_user
Python Executable: C:\job\venv\Scripts\python.exe
Python Version: 3.9.7
Python Path:
['C:\\job\\jobsite',
'C:\\Users\\Student\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip',
'C:\\Users\\Student\\AppData\\Local\\Programs\\Python\\Python39\\DLLs',
'C:\\Users\\Student\\AppData\\Local\\Programs\\Python\\Python39\\lib',
'C:\\Users\\Student\\AppData\\Local\\Programs\\Python\\Python39',
'C:\\job\\venv',
'C:\\job\\venv\\lib\\site-packages']
Server time: Tue, 19 Apr 2022 10:51:00 +0530
Я не понял, почему эта ошибка возникает даже при условии валидации JavaScript. Есть ли у кого-нибудь идеи, как решить эту проблему.
html
views.py
def candidateregister(request):
User = get_user_model()
if request.method=='POST':
fname = request.POST.get('cafname')
lname = request.POST.get('calname')
email_phone = request.POST.get('caemorpn')
password1 = request.POST.get('capassword1')
password2 = request.POST.get('capassword2')
terms = request.POST.get('cagridCheck')
type = request.POST.get('catype')
if terms == 'on':
terms = True
else:
terms = False
regex = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
if (re.fullmatch(regex, email_phone)):
if (User.objects.filter(email=email_phone).exists()):
messages.info(request, "Email ID Already Taken")
return redirect('register')
user = User.objects.create_user(first_name=fname,last_name=lname,password=password1,terms_and_conditions_confirmed=terms,type=type,email=email_phone,username=email_phone)
user.save()
send_action_email(user,request)
messages.add_message(request, messages.SUCCESS, 'We sent you an Email to verify Your Account...')
return redirect('login')
else:
print(email_phone)
if (User.objects.filter(phone=email_phone).exists()):
messages.info(request, "Phone number Already Taken")
return redirect('register')
user = User.objects.create_user(first_name=fname, last_name=lname, password=password1,terms_and_conditions_confirmed=terms, type=type, username=email_phone,phone=email_phone)
user.save()
JavaScript