django-tastypie有JSON响应

时间:2012-06-01 18:43:33

标签: django tastypie

我的意思是,我想在修改obj_create()时有JSON响应。我已经实现了UserSignUpResource(ModelResource)并且在obj_create()中,我做了一些验证,当它失败时,我引发了BadRequest()。但是,这并没有抛出JSON。它会抛弃String。

任何想法我是否可以抛弃{'错误':184,'消息':'此用户名已存在'}格式?或者我不想修改obj_create()?或者我该怎么办?

许多帮助,谢谢。

干杯, 米奇

2 个答案:

答案 0 :(得分:2)

很简单,我刚刚在tastypies http模块中创建了一个小帮手方法:

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

答案 1 :(得分: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))

通常你会调用super,错误应该来自tastypie验证过程。将自动抛出异常(错误字典保存在bundle.errors属性中)。