2014-01-22 42 views
0

目前我显示我的错误是这样的:Python的阵列中的错误消息

的Python API:

errors = {} 
errors['message'] = 'Sorry we could not log you in.' 
return self.create_response(request, {'errors':[errors]}, HttpUnauthorized) 

然后在Javascript中我展示他们是这样的:

for (var key in object.data.errors) { 
    $scope.errors.push(object.data.errors[key].message); 
    } 

正如你可以看到JavaScript循环的错误数组,但在Python中,如果我尝试这样做:

errors = {} 
errors['message'] = 'Sorry we could not log you in.' 
errors['message'] = 'another error' 
return self.create_response(request, {'errors':[errors]}, HttpUnauthorized) 

因为此代码只附加最后一个错误,而第一个错误将被覆盖。

如何保持相同的主体,但在Python中允许自己实际附加错误消息?

回答

1

你犯错误的字典,但你使用相同的密钥(message)与你的两个错误。您应该制作一个错误列表来代替:

errors = [] 
errors.append('Sorry we could not log you in.') 
errors.append('another error') 
return self.create_response(request, {'errors': errors}, HttpUnauthorized) 

然后在此列表上进行迭代。

for (var key in object.data.errors) { 
    $scope.errors.push(object.data.errors[key]); /* .message isn't necessary now */ 
} 

如果你想添加更多的错误信息,可以使字典的列表:

errors.append({'message': 'Sorry we could not log you in.', 'uid': 42}) 
errors.append({'message': 'another error', 'uid': 1337}) 
# uid parameter is imaginary here, it's just for the example 
0

有什么意思?errors a dict?您是否使用'message'值以外的任何值?

在任何情况下,你可以让一个列表:

errors['message'] = []          ## initialise to empty list 
errors['message'].append('Sorry we could not log you in.') ## add first error message 
errors['message'].append('another error')     ## add next 
+0

这会给我消息的数组,而不是错误,我想的数组。 – Prometheus

1

看你的例子试试这个。

  response = {} 
      response['errors'] = [] 
      response['errors'].append({'message': 'another error message'}) 
      response['errors'].append({'message': 'Sorry we could not log you in.'}) 
      return self.create_response(request, response, HttpUnauthorized) 

这会给你一个错误列表,它将与你提供的javascript例子一起工作。您还可以再做这样的:

response['errors'].append({'message': 'Sorry we could not log you in.', 'code', '22'}) 

+0

@glglgl'响应'哎呀,手指键盘界面错误,我的不好。 –