"TypeError: строковые индексы должны быть целыми числами" при использовании cleaned_data

Ошибка происходит здесь:

if request.method == 'POST':
        form = RegisterForm(request.POST)
        if form.is_valid():
            clean = form.cleaned_data

            username = clean['username']
            email = clean['email']
            password = clean['password']
            new_user = User.objects.create_user(username, email, password)
            new_user.save()
            new_account = Account(user=new_user, email=email)
            new_account.save()

На username = clean['username'] линия. Я смог использовать эту точную линию успешно в других местах без проблем. Почему это проблема сейчас?

2 ответа

Решение

Вы, вероятно, возвращаете неправильную вещь из формы clean() метод - вы должны вернуть полный self.cleaned_data толковый словарь.

По-видимому cleaned_data дает вам строку, а не словарь.

Поскольку строка может быть проиндексирована только по номерам, она выдаст вам эту ошибку.

Попробуйте напечатать значение, чтобы увидеть, что происходит.

Другие вопросы по тегам