1

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

def create(...):
    ...    
    resp = rc.BAD_REQUEST
    resp.content = 'Some string error message'
    return resp

或者我可以返回一个错误消息字典,它可以根据指定的发射器进行格式化,但带有 200 状态码:

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

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

4

2 回答 2

4

这个怎么样?

def create(...):
    ...    
    resp = rc.BAD_REQUEST
    resp.content = error_dict
    return resp
于 2011-03-03T22:35:48.550 回答
1

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

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)
于 2011-01-02T22:57:13.483 回答