Я пытаюсь сделать просмотры регистрации пользователей с помощью форм django.
Я посмотрел онлайн, но ничего, что я нашел, не может помочь мне; или, возможно, я не могу получить обоснование, поэтому объяснение приветствуется.
Я изменил стандартного пользователя с помощью пользовательского класса с именем «Utente» (итальянское имя)
Функция просмотра - это простая функция, которая настраивает «контекст», который должен передаваться шаблону, чтобы можно было уведомить форму, подтверждение или ошибку.
views.py
def registrazione(request):
context = {}
if request.method == 'POST':
context.update({ 'stato':'post'})
form = UtenteChangeForm(request.POST)
if form.is_valid():
print("--FORM\n",form.cleaned_data,'\n-------')
utente = Utente.objects.create_user(**form.cleaned_data)
print("---UTENTE\n", utente)
login(request, utente)
if utente is not None:
context.update({'utente':utente.username})
else:
print('ERROREEEEEEEEEEEE')
else:
context.update({ 'stato':'errore' })
else: # GET
form = UtenteCreationForm()
if request.user.is_authenticated:
context.update({ 'stato':'loggato' })
else:
context.update({ 'stato':'anonimo'})
context.update({'form':form })
return render(request, 'profilo/registrazione.html', context)
Форма должна расширять стандартную форму создания пользователя.
forms.py
lass UtenteCreationForm(UserCreationForm):
username = forms.CharField(min_length=5)
email = forms.EmailField(min_length=5)
first_name = forms.CharField()
last_name = forms.CharField()
data_nascita = forms.DateField(input_formats=['%d/%m/%Y'])
cellulare =forms.RegexField(regex=r'^\+?\d{9,15}$')
residenza = forms.CharField(min_length=5)
class Meta(UserCreationForm):
model = Utente
fields = ('username','first_name', 'last_name', 'email', 'data_nascita', 'cellulare', 'residenza')
Печать form.cleaned_data, помещенная в стандартный вывод (один для всех):
--FORM
{'username': 'thomas', 'email': 'thoma@g.com', 'cellulare': '3341193124', 'residenza': 'viq culonia', 'password': None}
Первая проблема почему пароль всегда получает «Нет»? Я пробовал другой тип пароля, поэтому я должен был удовлетворить требования к паролю.
Вторая проблема (необязательно) Почему некоторые поля не отображаются? У них нет никаких требований (не заданных мной), так почему они сбрасываются на ноль?
например, я установил 'Paolo' в качестве first_name, так почему не принимается?
вместо data_nascita было 23.05.1995, так что оно в правильном формате, верно?
Примечание Это небольшой университетский проект, поэтому я в конечном итоге могу вырезать то, что не является фундаментальным.
Спасибо всем за потраченное время.