2014-01-21 2 views
0

Мне нужно найти общий способ сообщить об ошибке вернуться к своим пользователям с TastyPie, например, глядя на твиттере это, как они всегда показывают ошибки:ошибки в стиле Twitter для Django TastyPie

{"errors":[{"message":"Sorry, that page does not exist","code":34}]} 

Так ошибка массив ошибок.

Я пытался сделать что-то по той же схеме в TastyPie так:

def is_valid(self, bundle, request=None): 
     errors = {} 
     # Check if user already exists before allowing API to create a new one. 
     this_email = bundle.data.get('email', None) 
     object_count = Member.objects.filter(email=this_email).count() 
     if object_count != 0: 
      errors['ERRORS'] = 'Duplicate email address' 
     return errors 

Но как вы можете видеть его не очень DRY и выход не прав:

{"object_register":{"ERRORS":"Sorry, that page does not exist"}} 

У меня есть также попробовал:

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

Так что, мой вопрос заключается в том, что для ошибок можно получить вывод «Twitter» для ошибок используя «Татипи» сухим способом? Если да, то какие-нибудь примеры?

ответ

1

Чтобы настроить вывод ошибки, вы можете переопределить метод самого ресурса is_valid.

MyResource(ModelRecource): 
    def is_valid(self, bundle): 
     errors = self._meta.validation.is_valid(bundle, bundle.request) 

     if errors: 
      bundle.errors['errors'] = [errors] 
      return False 

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