Форма Джанго не получает пароль - PullRequest
0 голосов
/ 06 июля 2019

Я пытаюсь сделать просмотры регистрации пользователей с помощью форм 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, так что оно в правильном формате, верно?

Примечание Это небольшой университетский проект, поэтому я в конечном итоге могу вырезать то, что не является фундаментальным.

Спасибо всем за потраченное время.

...