Представление регистрации в Django: TypeError: объект 'set' недопустим - PullRequest
0 голосов

Мое веб-приложение на django ловит ошибку из-за регистрации с разными набранными паролями.Все другие ошибки формы работают нормально, включая принятую электронную почту, пустые поля и так далее.Ошибка при проверке формы регистрации.

Не совсем понимаю, почему у меня есть эта ошибка, потому что она не затронута моим кодом (я думаю).

Вот трассировка:

Traceback (most recent call last):
  File "/home/kotofey/AccentAcademy/aaenv/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/kotofey/AccentAcademy/aaenv/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/kotofey/AccentAcademy/aaenv/lib/python3.6/site-packages/django/core/handlers/base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/kotofey/AccentAcademy/registration/views.py", line 44, in signup
    if form.is_valid():
  File "/home/kotofey/AccentAcademy/aaenv/lib/python3.6/site-packages/django/forms/forms.py", line 185, in is_valid
    return self.is_bound and not self.errors
  File "/home/kotofey/AccentAcademy/aaenv/lib/python3.6/site-packages/django/forms/forms.py", line 180, in errors
    self.full_clean()
  File "/home/kotofey/AccentAcademy/aaenv/lib/python3.6/site-packages/django/forms/forms.py", line 381, in full_clean
    self._clean_fields()
  File "/home/kotofey/AccentAcademy/aaenv/lib/python3.6/site-packages/django/forms/forms.py", line 402, in _clean_fields
    value = getattr(self, 'clean_%s' % name)()
  File "/home/kotofey/AccentAcademy/aaenv/lib/python3.6/site-packages/django/contrib/auth/forms.py", line 101, in clean_password2
    self.error_messages['password_mismatch'],
TypeError: 'set' object is not subscriptable

1 Ответ

0 голосов
/ 27 марта 2019

Похоже, что любая форма, которую вы отображаете в строке 44, имеет свойство error_messages, которое имеет тип set, а не какой-то подписываемый тип (например, dict).

Следовательно, вы определили форму со свойством error_messages неправильного типа.

Если вы изучите код для этого экземпляра формы (где бы он ни был определен), скорее всего, вы найдете «плохое» свойство error_messages.

Вы также можете попробовать загрузить форму и немного ее изучить:

$./manage.py shell
>>>> from some.app.forms import SomeFormClass
>>>> f = SomeFormClass()
>>>> type(f.error_messages)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...