在我的django-piston处理函数中,看起来我基本上可以做两件事。我可以使用一些非格式化的内容返回特定的状态代码:
def create(...):
...
resp = rc.BAD_REQUEST
resp.content = 'Some string error message'
return resp
或者我可以返回错误消息的字典,可以根据指定的发射器格式化,但具有200状态代码:
def create(...):
...
return error_dict
如何返回由指定发射器格式化但具有自定义状态代码的字典或模型对象?
答案 0 :(得分:4)
这个怎么样?
def create(...):
...
resp = rc.BAD_REQUEST
resp.content = error_dict
return resp
答案 1 :(得分: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)