django-tastypie получит ответ JSON
Я имел в виду именно то, что я хотел бы получить ответ JSON при изменении obj_create(). Я реализовал UserSignUpResource(ModelResource) и внутри obj_create(), я сделал некоторую проверку, и когда это не удается, я поднимаю BadRequest(). Тем не менее, это не выбрасывает JSON. Вместо этого он выбрасывает строку.
Любая идея, если я могу заставить его выбросить {{error': 184, 'message': ' Это имя пользователя уже существует '} в формате? Или я не должен изменять obj_create()? Или что мне делать вместо этого?
Многие помогают, спасибо.
Ура, Микки
2 ответа
Это просто, я только что создал небольшой вспомогательный метод в http-модуле tastypies:
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))
Вы должны использовать метод 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))
Обычно вы называете супер, и ошибки должны возникать в процессе проверки вкусного пирога. Исключение будет выдано автоматически (словарь ошибок будет сохранен в свойстве bundle.errors).