如何使用django活塞返回具有非200状态代码的对象?

如何使用django活塞返回具有非200状态代码的对象?,django,http,django-piston,Django,Http,Django Piston,在我的django活塞处理器函数中,看起来我基本上可以做两件事。我可以返回带有一些非格式化内容的特定状态代码: def create(...): ... resp = rc.BAD_REQUEST resp.content = 'Some string error message' return resp 或者我可以返回错误消息字典,可以根据指定的发射器进行格式化,但状态代码为200: def create(...): ... retur

在我的django活塞处理器函数中,看起来我基本上可以做两件事。我可以返回带有一些非格式化内容的特定状态代码:

def create(...):
    ...    
    resp = rc.BAD_REQUEST
    resp.content = 'Some string error message'
    return resp
或者我可以返回错误消息字典,可以根据指定的发射器进行格式化,但状态代码为200:

def create(...):
    ...
    return error_dict

如何返回由指定发射器格式化但带有自定义状态代码的字典或模型对象?

为了解决这个问题,我在BaseHandler的my子类中添加了一个新函数,尽管它可以添加到任何处理程序中。该函数手动调用发射器以正确格式化内容,然后添加内容类型和状态代码

class MyBaseHandler(BaseHandler):

    def render_response(self, request, response, content):

        em_info = None
        for ext in Emitter.EMITTERS:
            if request.path.find('.'+ext) > -1:
                em_info = Emitter.get(ext)
        if not em_info:
            return rc.NOT_FOUND

        RequestEmitter = em_info[0]

        emitter = RequestEmitter(content, typemapper, self, self.fields, False)
        response.content = emitter.render(request)
        response['Content-Type'] = em_info[1]

        return response
这样称呼:

def create(...):
    ... 
    return self.render_response(request, rc.BAD_REQUEST, error_dict)

为了解决这个问题,我在BaseHandler的my子类中添加了一个新函数,尽管它可以添加到任何处理程序中。该函数手动调用发射器以正确格式化内容,然后添加内容类型和状态代码

class MyBaseHandler(BaseHandler):

    def render_response(self, request, response, content):

        em_info = None
        for ext in Emitter.EMITTERS:
            if request.path.find('.'+ext) > -1:
                em_info = Emitter.get(ext)
        if not em_info:
            return rc.NOT_FOUND

        RequestEmitter = em_info[0]

        emitter = RequestEmitter(content, typemapper, self, self.fields, False)
        response.content = emitter.render(request)
        response['Content-Type'] = em_info[1]

        return response
这样称呼:

def create(...):
    ... 
    return self.render_response(request, rc.BAD_REQUEST, error_dict)
这个怎么样

def create(...):
    ...    
    resp = rc.BAD_REQUEST
    resp.content = error_dict
    return resp
这个怎么样

def create(...):
    ...    
    resp = rc.BAD_REQUEST
    resp.content = error_dict
    return resp