@Cyber_bober

Почему не срабатывает clean?

Делаю регистрацию, Django 1.9 Python 2.7

def signup(request):
    user_form = UserCreateForm(data=request.POST)
    if request.method == 'POST':
        if user_form.is_valid():
            username = user_form.clean_username()
            password = user_form.clean_password2()
            user_form.save()
            user = authenticate(username=username, password=password)
            login(request, user)
            return redirect('/edit')
        else:
            return index(request, user_form=user_form)
    return redirect('/edit')


Получаю ошибку

'UserCreateForm' object has no attribute 'clean_username'

В чем может быть причина? Может я использую старый синтаксис?
  • Вопрос задан
  • 226 просмотров
Решения вопроса 1
crazyzubr
@crazyzubr
Python backend-developer
username = user_form.cleaned_data['username']

Метод clean() уже сработал один раз, все данные нужно брать из self.cleaned_data
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
DmitryVoronkov
@DmitryVoronkov
Python Developer
Наверное так будет правильнее. а вообще советую всегда заглядывать в исходники.
def signup(request):
    user_form = UserCreateForm(data=request.POST)
    if request.method == 'POST':
        if user_form.is_valid():
            model = user_form.save()
            user = authenticate(username=model.username, password=model.password)
            login(request, user)
            return redirect('/edit')
        else:
            return index(request, user_form=user_form)
    return redirect('/edit')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы