Чтобы решить эту проблему, я добавил новую функцию в мой подкласс 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)