我在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
看起来,在第44行呈现的任何形式都有一个
error_messages
属性,该属性属于set
类型,而不是某种可订阅类型(如dict
)。在因此,您定义了一个具有错误类型的
error_messages
属性的表单。在如果您检查表单实例的代码(无论它是在哪里定义的),您很可能会发现“bad”
error_messages
属性。在您也可以尝试加载表单并检查一下:
相关问题 更多 >
编程相关推荐