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).

Другие вопросы по тегам