내 코드
def is_valid(self):
form = super(UserCreateForm, self).is_valid()
for f, error in self.errors.iteritems():
if f != '__all_':
self.fields[f].widget.attrs.update({'class': 'error', 'value': strip_tags(error)})
return form
역 추적
Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/saurabh/Desktop/project/ribbit/ribbit_app/views.py" in signup
48. if user_form.is_valid():
File "/home/saurabh/Desktop/project/ribbit/ribbit_app/forms.py" in is_valid
18. self.fields[f].widget.attrs.update({'class': 'error', 'value': strip_tags(error)})
File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py" in wrapper
203. return func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/html.py" in strip_tags
134. s.feed(value)
File "/usr/lib/python2.7/HTMLParser.py" in feed
113. self.rawdata = self.rawdata + data
Exception Type: TypeError at /signup
Exception Value: cannot concatenate 'str' and 'ErrorList' objects
Django form.errors 는 사전이고 키는 필드 이름이며 값은 lists
오류 메시지를 나타내는 유니 코드 문자열입니다. lists
필드에 여러 오류 메시지가있을 수 있으므로 오류 메시지가에 저장됩니다 .
>>> f.errors
{'sender': ['Enter a valid email address.'], 'subject': ['This field is required.']}
그리고 strip_tags (value) 는 값을 얻지 string
만 list
객체 를 전달 합니다.
def is_valid(self):
form = super(UserCreateForm, self).is_valid()
for f, error in self.errors.iteritems():
# Here `error` is a list of errors for `f` field. (may be one or more)
if f != '__all_':
self.fields[f].widget.attrs.update({'class': 'error', 'value': strip_tags(error)})
return form
따라서이 줄을 변경해야합니다.
self.fields[f].widget.attrs.update({'class': 'error', 'value': strip_tags(error)})
받는 사람 : (첫 번째 오류 만 가져 오기)
self.fields[f].widget.attrs.update({'class': 'error', 'value': strip_tags(error[0])})
또는 : (모든 오류가있는 경우)
self.fields[f].widget.attrs.update({'class': 'error', 'value': strip_tags(", ".join(error))})
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다