오늘 아침에 Tastypie로 장고 REST API를 개발했습니다. 문제가 발생했을 때 해결 방법을 모릅니다.Tastypie의 JSON으로 예외 오류를 반환합니다.
class UserSignUpResource(ModelResource):
class Meta:
object_class = User
queryset = User.objects.all()
allowed_methods = ['post']
include_resource_uri = False
resource_name = 'newuser'
serializer = CamelCaseJSONSerializer(formats=['json'])
authentication = Authentication()
authorization = Authorization()
always_return_data = True
validation = FormValidation(form_class=UserSignUpForm)
이 자원은 JSON 포맷 된 데이터를 수신하고 새로운 자원 (I에만 permmit POST 작전)을 생성 : 나는 다음과 같습니다 자원을 가지고있다. 그래서, 먼저 데이터를 통해 판정한다
validation = FormValidation(form_class=UserSignUpForm)
것은 데이터가 잘못된 경우, 그것은 ImmediateHttpResponse을 반환한다는 것을입니다.
except ImmediateHttpResponse, e:
bundle = {"code": 777, "status": False, "error": e.response.content}
return self.create_response(request, bundle, response_class = HttpBadRequest)
이 코드는 예외를 제대로 캡처 :
{"status": False, "code": 777, "errors": {"pass":["Required"], ...}
그래서, 나는 다음과 같은 코드를 내 wrap_view을 무시하고 추가 : 그러나 나는이 예외를 포착하고이 같은 JSON을 만들 것 ,하지만 문제가 있습니다. e.response에는 오류가있는 유니 코드 문자열이 들어 있습니다. 그래서, 마지막주는 응답은 \와 그가를 "나를 죽이고하는 것은. 다른 측면에서, AJAX 작업을하는 프론트 엔드 개발자가, 나에게 말한다 첫번째 구문 분석 할 수없는 저주
{"code": 777,
"error": "{\"birthdayDay\": [\"This field is required.\"],
\"birthdayMonth\": [\"This field is required.\"],
\"birthdayYear\": [\"This field is required.\"],
\"csrfmiddlewaretoken\": [\"This field is required.\"],
\"email\": [\"This field is required.\"],
\"email_2\": [\"This field is required.\"],
\"firstName\": [\"This field is required.\"],
\"gender\": [\"This field is required.\"],
\"lastName\": [\"This field is required.\"],
\"password1\": [\"This field is required.\"]}",
"status": false}
입니다 오류
내가 여기서 뭔가 잘못을하고있는 중이 야 누구는 JSON으로, 예외 응답을 변환하는 방법을
'e.response.content'는 사전이 아닌 문자열로 보입니다. 그렇기 때문에 JSON 시리얼 라이저가이를 처리합니다. – Wessie