2014-01-22 5 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

Вы делаете Dict ошибок, но вы используете один и тот же ключ (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 */ 
} 

Если вы хотите, чтобы добавить дополнительную информацию об ошибке, вы можете составить список Dict:

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 'response' oops, пальцы к ошибке интерфейса клавиатуры, мой плохой. –

Смежные вопросы