Это может быть дубликат, но я пробовал множество решений, но ни одно из них не помогло мне.
views.py
class signup_view(View):
def get(self, request):
signup_form = SignUpForm()
return render(request, 'signup.html', {"forms": signup_form})
def post(self, request):
signup_form = SignUpForm(data=request.POST)
if signup_form.is_valid():
email = signup_form.cleaned_data.get('user_email')
password = signup_form.cleaned_data.get('user_pass')
print("Original password is: ", password)
hashed_password = make_password(password)
print("Hashed password is: ", hashed_password)
signup_form.inital['user_pass'] = hashed_password
signup_form.save()
request.session['username'] = email
return render(request, 'main_page.html')
else:
return render(request, 'signup.html', {"forms": signup_form})
У меня есть это представление django, которое я заполняю информацией изОднако после отправки запроса мне нужно убедиться, что и пароль, и подтверждение пароля (в формах) совпадают, чтобы я мог их обработать. Я делаю это в функции clean (), которую я опубликую ниже. Однако мне нужно сохранить хешированный пароль в моей базе данных, а не фактический пароль, и я понятия не имею, что я могу сделать, чтобы изменить содержание формы после того, как я уже убедился, что она действительна (не уверен, смогу ли я вообще это сделать).
class SignUpForm(forms.ModelForm):
user_pass_check = forms.CharField(label="Password confirmation", widget=forms.PasswordInput())
class Meta:
model = AppUser
fields = ["user_email", "user_country", "user_pass"]
widgets = {"user_pass": forms.PasswordInput()}
def clean(self):
cleaned_data = super(SignUpForm, self).clean()
pass1 = cleaned_data.get('user_pass_check')
pass2 = cleaned_data.get('user_pass')
if pass1 != pass2:
raise forms.ValidationError("The two password fields must match.")
return cleaned_data
Любая помощь была бы удивительной, я боролся с этим часами. Заранее спасибо!