0

我正在使用 django-piston 创建我的 api。我需要知道是否可以根据参数更改返回字段。我正在尝试返回缩略图字段,但我需要选择通过 URL 传递缩略图的大小。

提前致谢

4

1 回答 1

0

刚刚对类似的事情感到困惑,我相信我可以帮助您指出正确的方向。

要意识到的基本事情是活塞不关心你返回什么。对于我的用例,我想返回子资源。所以,如果我有:

{
    "foo": "bar",
    "baz": [{"id": 1}, {"id": 23}],
}

我可以只请求baz对象,然后得到:

{
    "baz": [{"id": 1}, {"id": 23}],
}

起初我尝试动态更改处理程序的fieldsor excludes,但那是完全错误的方法。一旦我意识到活塞根本不在乎,我就这样做了:

 if attrib is not None:
     if hasattr(binder, attrib):
         return getattr(binder, attrib)

     else:
         return rc.BAD_REQUEST

效果很好。一个警告:fieldsexcludes适用于您返回的对象。当我试图返回一个子资源并且我没有得到所有字段时,它让我措手不及。因此,检查是否遇到问题。

对于您的情况,具体来说,我认为您可以轻松地将缩略图生成为请求的大小,然后构建一个元对象以返回:

meta = dict()
meta['thumbnail' = generateThumbnail(width, height)
meta['other_field'] = base.other_field

return meta

看看这是否适合你。

于 2012-11-07T17:20:51.783 回答