Я пытаюсь создать регистрационную форму, используя djangos, встроенный в User. Я хотел бы иметь поле пароля, а затем второе поле для проверки совпадения паролей (имейте в виду, что это новый пользователь, поэтому в базе данных еще нет пароля). Я думаю, что я действительно близок, и мне кажется, что мне нужна ошибка проверки, чтобы перейти от формы к представлению. Форма просто очищает наши пароли ... и оставляет оставшиеся введенные данные, но ошибки проверки не выдается вообще. Любые мысли и помощь с благодарностью!
Форма
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
ver_password = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': ' confirm password'}))
ver_email = forms.EmailField(widget=forms.EmailInput(attrs={'placeholder': ' confirm email'}))
class Meta():
model = User
fields = ('username',
'password',
'first_name',
'last_name',
'email')
def clean(self):
all_clean_data = super().clean()
clean_email = all_clean_data['email']
clean_ver_email = all_clean_data['ver_email']
clean_password = all_clean_data['password']
clean_ver_password = all_clean_data['ver_password']
if clean_email != clean_ver_email:
raise forms.ValidationError("Emails do not match")
if clean_password != clean_ver_password:
raise forms.ValidationError("Passwords do not match")
return all_clean_data
Просмотр
def register(request):
registered = False
newregister = False
if request.method == 'POST':
user_form = UserForm(data=request.POST)
profile_form = UserProfileInfoForm(data=request.POST)
if user_form.is_valid() and profile_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save(update_fields=['username','password','first_name','last_name','email'])
profile = profile_form.save(commit=False)
profile.user = user
if 'profile_pic' in request.FILES:
profile.profile_pic = request.FILES['profile_pic']
profile.save()
registered = True
newregister = True
return render(request, 'dai_members_app/login.html',
{'user_form':user_form,
'profile_form':profile_form,
'registered':registered})
else:
print(user_form.errors,profile_form.errors)