У меня проблемы с django Аллахом. Я создаю свою пользовательскую форму, и она отлично работает, но теперь мне нужно переопределить регистрацию
Я попробовал это:
class CustomSignupForm(SignupForm):
password1 = SetPasswordField(label="Password")
password2 = PasswordField(label="Conferma Password")
first_name = forms.CharField(max_length=30, label='Nome')
last_name = forms.CharField(max_length=30, label='Cognome')
data_di_nascita = forms.CharField(max_length=30, label='Data di nascita',widget=forms.TextInput(attrs={'placeholder': 'gg/mm/aaaa'}))
citta = forms.CharField(max_length=30, label='Città', required=False)
regione = forms.CharField(max_length=30, label='Regione', required=False)
stato = CountryField(blank_label='Nazione',blank=True).formfield()
termini_e_condizioni = forms.BooleanField(label='termini_e_condizioni',widget=forms.CheckboxInput(attrs={'class':'your_class'}))
privacy = forms.BooleanField(label='privacy',widget=forms.CheckboxInput(attrs={'class':'your_class'}), required=False)
newsletter = forms.BooleanField(label='newsletter',widget=forms.CheckboxInput(attrs={'class':'your_class'}), required=False)
def __init__(self, *args, **kwargs):
super(CustomSignupForm, self).__init__(*args, **kwargs)
self.fields['password1'].label = "Password"
self.fields['password2'].label = "Conferma Password"
self.fields['password1'].widget = PasswordInput(attrs={'class': 'form-control', 'placeholder': 'Password'})
self.fields['password2'].widget = PasswordInput(attrs={'class': 'form-control', 'placeholder': 'Conferma Password'})
for field in self.fields:
help_text = self.fields[field].help_text
self.fields[field].help_text = None
if help_text != '':
self.fields[field].widget.attrs.update({'class':'has-popover', 'data-content':help_text, 'data-placement':'right', 'data-container':'body'})
def confirm_password(self):
print('entered confirm_password')
if ("password1" in self.cleaned_data
and "password2" in self.cleaned_data):
print('password fields found')
if self.cleaned_data['password1'] != self.cleaned_data['password2']:
print('le password non corrispondono')
raise forms.ValidationError(_("You must type the same password"
" each time."))
print('passwords equal')
return self.cleaned_data["password1"]
else:
print('passwords not found in form')
raise forms.ValidationError(_("Password not found in form"))
def signup(self, request, user):
print("-------------------------------------------------------------------OK----------------------------------------------")
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.save()
userpost=User.objects.get(username=self.cleaned_data['username'])
userpost.personal_data.birthdate = self.cleaned_data['data_di_nascita']
userpost.personal_data.country = self.cleaned_data['stato']
userpost.personal_data.subcountry = self.cleaned_data['regione']
userpost.personal_data.city = self.cleaned_data['citta']
userpost.personal_data.created = timezone.now()
userpost.personal_data.save()
userpost.markeringpreference.subscribed=self.cleaned_data['newsletter']
userpost.newsletterpreference.subscribed=self.cleaned_data['newsletter']
userpost.markeringpreference.save()
userpost.newsletterpreference.save()
return user
Это правильно? Я спрашиваю, потому что он не сохраняет personal_data
и никогда не печатает первую строку (prin('———ok——-')
)
Моя версия Django - 2.2 и django -ответ 0.41.0