我希望能够使用 django-piston 返回带有格式化内容的 HTTP 响应。
我想我必须创建自己的rc_factory
.
我想做的是:
return rc.404({'status': 0,'message': 'This restaurant does not exists.'})
通过 XMLEmiter、JSONEmiter 或 YAMLEmiter 提供的关于客户端正在寻找的格式的结果。
我怎样才能做到这一点 ?
干杯
我希望能够使用 django-piston 返回带有格式化内容的 HTTP 响应。
我想我必须创建自己的rc_factory
.
我想做的是:
return rc.404({'status': 0,'message': 'This restaurant does not exists.'})
通过 XMLEmiter、JSONEmiter 或 YAMLEmiter 提供的关于客户端正在寻找的格式的结果。
我怎样才能做到这一点 ?
干杯
你怎么看这样的事情:
# -*- coding: utf-8 -*-
from piston.handler import typemapper
from piston.emitters import Emitter
def getErrorResponse(http_code, payload, em_format='json'):
emitter, ct = Emitter.get(em_format)
srl = emitter(payload, typemapper, handler=None, anonymous=False)
r = srl.render({})
return HttpResponse(r, content_type=ct, status=http_code)
像这样使用:
return getErrorResponse(404, {'status': 0,'message': 'This restaurant does not exists.'})
但问题来自 em_format 属性。
实际上,hander 方法可以通过在处理函数中添加带有emitter_format 属性的方法来获取此信息。
...
def read(self, request, emitter_format=None):
if emitter_format is None:
emitter_format = request.GET.get('format', 'json')
...
return getErrorResponse(404, {'status': 0,'message': 'This restaurant does not exists.'}, emitter_format)