Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 类型错误无法连接';str';和';错误列表';物体_Python_Django_Python 2.7 - Fatal编程技术网

Python 类型错误无法连接';str';和';错误列表';物体

Python 类型错误无法连接';str';和';错误列表';物体,python,django,python-2.7,Python,Django,Python 2.7,我的代码 回溯 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)}) re

我的代码

回溯

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
Django是一个字典,键是字段名,值是表示错误消息的Unicode字符串的列表。错误消息存储在
列表中,因为一个字段可以有多个错误消息:

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
并将值作为
string
获取,但将
列表
对象传递给它:

>>> f.errors
{'sender': ['Enter a valid email address.'], 'subject': ['This field is required.']}
因此,您需要更改这一行:

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))})