2012-06-01 5 views
0

정확하게 의미하는 바는 obj_create()를 수정할 때 JSON 응답을 보내고 싶습니다. UserSignUpResource (ModelResource)를 구현했고 obj_create() 내부에서 유효성 검사를 수행했고 실패 할 경우 BadRequest()를 발생시킵니다. 그러나 JSON이 삭제되지는 않습니다. 대신 String을 throw합니다.django-tastypie가 JSON 응답을 사용합니다.

'오류': 184, 'message': '이 사용자 이름이 이미 존재합니다.'} 형식을 벗어날 수 있습니까? 아니면 obj_create()를 수정하지 않겠습니까? 아니면 내가 대신해야합니까?

많은 도움, 감사합니다.

건배, 미키

은, 난 그냥 tastypies HTTP에 약간의 도우미 메서드를 만들었으니
+0

django-piston에서 편의 오류 응답 유형이 일반 html 응답 인 동일한 문제가있었습니다. 나는 그것들을 재 포맷 할 나의 자신의 커스텀'JsonResponse' 안에 포장해야했습니다. – jdi

답변

2

쉬운 모듈 : 다음

import json 

#tastypies HttpResponse classes here... 

def create_json_response(data, http_response_class): 
    return http_response_class(content=json.dumps(data), content_type="application/json; charset=utf-8") 

당신은 간단하게 말할 수있다 :

from tastypie.http import HttpNotFound, create_json_response 

#choose HttpNotFound, HttpCreated whatever... 
raise ImmediateHttpResponse(create_json_response({"error":"resource not found"}, HttpNotFound)) 
+0

tastypie http 모듈에 대한 메소드를 작성하는 것이 좋은 아이디어라고 생각하지 않습니다. 당신이 정말로 그것을 만들 필요가 있다면, tastypie가 아닌 당신의 도우미 모듈에서 그것을 수행하십시오 (나는 당신이 그것을 필요로하지 않는다고 생각합니다). – cristiano2lopes

0

당신에게 자원의 error_response 메소드를 사용해야합니다. 같은

뭔가 :

def obj_create(self, bundle, **kwargs): 
     # Code that finds Some error 
     my_errors = {"error": ["Some error"]} 
      raise ImmediateHttpResponse(response=self.error_response(bundle.request, my_errors)) 

은 보통 슈퍼 부를 것이다 및 오류는 tastypie 확인 과정에서 발생한다. 예외가 자동으로 throw됩니다 (오류 사전이 bundle.errors 등록 정보에 저장 됨).

관련 문제