Django注册视图:类型错误:“set”对象不是subscriptab

2024-09-29 21:38:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我在django上的web应用程序在注册时遇到了一个错误,输入了不同的密码。所有其他表单错误都很好,包括电子邮件、空字段等等。验证注册表单时出错。在

我真的不明白我为什么会有这个错误,因为它不受我的代码的影响(我猜)。在

以下是回溯:

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

Tags: djangoinpyselfhomeresponselibpackages
1条回答
网友
1楼 · 发布于 2024-09-29 21:38:29

看起来,在第44行呈现的任何形式都有一个error_messages属性,该属性属于set类型,而不是某种可订阅类型(如dict)。在

因此,您定义了一个具有错误类型的error_messages属性的表单。在

如果您检查表单实例的代码(无论它是在哪里定义的),您很可能会发现“bad”error_messages属性。在

您也可以尝试加载表单并检查一下:

$./manage.py shell
>>>> from some.app.forms import SomeFormClass
>>>> f = SomeFormClass()
>>>> type(f.error_messages)

相关问题 更多 >

    热门问题