0

我的意思是,我想在修改 obj_create() 时得到 JSON 响应。我已经实现了 UserSignUpResource(ModelResource) 并在 obj_create() 内部进行了一些验证,当它失败时,我提出了 BadRequest()。但是,这并不会丢弃 JSON。它会抛出 String 。

知道我是否可以让它抛出 {'error': 184, 'message': 'This username already exists'} 格式?还是我不打算修改 obj_create()?或者我应该怎么做?

多多帮助,谢谢。

干杯,米奇

4

2 回答 2

2

很简单,我刚刚在tastepies 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))
于 2012-10-07T22:03:32.623 回答
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 并且错误应该来自于 sweetpie 验证过程。异常将被自动抛出(错误字典保存在 bundle.errors 属性中)。

于 2014-12-18T15:01:06.260 回答