【问题标题】:Change return-fields in read method django-piston在读取方法 django-piston 中更改返回字段
【发布时间】:2012-06-25 15:33:54
【问题描述】:

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

提前致谢

【问题讨论】:

  • 您能否具体说明您想要更改的内容/提供给定输入的预期输出示例?听起来您想在 YourHandler.fields 中添加或删除项目,但我不确定。

标签: python django api python-imaging-library django-piston


【解决方案1】:

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

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

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

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

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

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

 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

看看这是否适合你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多