gpt4 book ai didi

django - Wagtail 从 JSON api 或直接获取/生成图像 url

转载 作者:行者123 更新时间:2023-12-04 20:42:40 24 4
gpt4 key购买 nike

我一直在使用 Wagtail 作为 headless CMS 与前端应用程序一起使用,但是我注意到一些关于图像的限制。通常在你的 jinja 模板中,你会生成你需要的正确图像大小,一切都很好,但是我无法在我的前端代码中访问这些帮助程序。我一直在尝试几件事。例如,为了解决简单页面模型及其字段的问题,我可以渲染一个自定义 api 字段,如下所示:

api_fields = [
# Adds information about the source image (eg, title) into the API
APIField('feed_image'),

# Adds a URL to a rendered thumbnail of the image to the API
APIField('feed_image_thumbnail', serializer=ImageRenditionField('fill-100x100', source='feed_image')),
...
]

但是,这不适用于流场,因为它们只会返回图像 ID。所以我想我会使用 Wagtail 图像 API,但这也不允许我访问直接 URL。

我找到了一些引用此文档的 google group 答案: http://docs.wagtail.io/en/v1.9/advanced_topics/images/image_serve_view.html

但是,最新版本的文档中似乎不存在此页面,并且似乎不允许我从前端的 url 生成图像。

有没有办法创建一个允许我根据其 ID 获取图像的 url?

例如: somehost:8000/images/1?width=200&height=200
或者也许我忽略了其他一些解决方案。

我喜欢 wagtail 但无法轻松访问图像 url 确实限制了它的 API 使用,我希望有一个很好的解决方案。

谢谢

编辑:
我设法在文档中找到了这个:
http://docs.wagtail.io/en/v1.11.1/advanced_topics/images/image_serve_view.html

但是他们声明:

The view takes an image id, filter spec and security signature in the URL. If these parameters are valid, it serves an image file matching that criteria.



但是他们没有给出一个明确的例子来说明这样的请求会是什么样子,或者我将如何生成该安全签名。

最佳答案

获取图像再现作为 StreamField 数据结构的一部分的一种(稍微有点hacky)方法是覆盖 ImageChooserBlockget_api_representation方法:

from wagtail.wagtailimages.blocks import ImageChooserBlock as DefaultImageChooserBlock

class ImageChooserBlock(DefaultImageChooserBlock):
def get_api_representation(self, value, context=None):
if value:
return {
'id': value.id,
'title': value.title,
'large': value.get_rendition('width-1000').attrs_dict,
'thumbnail': value.get_rendition('fill-120x120').attrs_dict,
}

使用此版本的 ImageChooserBlock在您的 StreamField 定义中,您将提供“大”和“缩略图”作为 API 响应的一部分,而不仅仅是图像 ID。

关于django - Wagtail 从 JSON api 或直接获取/生成图像 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45732594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com