Django nie dzialajaca metoda form.is_valid()

0

Witam. mam maly problem mam nastepujacy kod :

class UserRegistrationForm(forms.ModelForm):
    password = forms.CharField(label='Password', widget=forms.PasswordInput)
    repeat_password = forms.CharField(label='Repeat Password', widget=forms.PasswordInput)

    class Meta:
        model = User
        fields = ['username','first_name', 'email']

    def clean_rep_pass(self):

        if self.cleaned_data['password'] != self.cleaned_data['repeat_password']:
            raise forms.ValidationError('passwords arent the same!')
        return self.cleaned_data['repeat_password']

metoda is_valid() powinna zadzialac w ten sposob ze jezeli hasla nie sa prawidlowe to zwroci mi blad . fakt faktem nie przekierowywuje strony do success ale i uzytkownik jest dodawany do bazy choc nie powinien

Tutaj views.py

 from django.shortcuts import render
from .forms import UserRegistrationForm
def register(request):

    if request.method == 'POST':
        form = UserRegistrationForm(request.POST)
        if form.is_valid():
            user = form.save(commit=False)
            user.set_password(form.cleaned_data['password'])
            user.save()
            return render(request, 'account/registration_success.html', {'user':user})
    else:
        form = UserRegistrationForm()

    return render(request, 'account/register.html', {'form':form})
0

ok dziala glupi blad metoda clean_<nazwa_pola> a ja uzywalem swojej

0
Trzeźwy Karp napisał(a):

ok dziala glupi blad metoda clean_<nazwa_pola> a ja uzywalem swojej

To co miałeś w clean_rep_password powinno być w clean a nie w clean_repeat_password. Jakbyś zamienił miejscami szyk definicji pól (password z repeat_password miejscami) to by ci przestało działać. Plus konwencja jest taka, że jak potrzebujesz spradzić "oddziaływanie" paru wartości formularza na siebie to dajesz to clean (patrz docsy).

1 użytkowników online, w tym zalogowanych: 0, gości: 1