В моем приложении wagtail у меня есть поле потока, которое используется для загрузки изображения с использованием ImageChooserBlock вместе с заголовком и текстом. Это означает, что в единственном поле потока у меня есть заголовок, текст и вход для загрузки изображения. Я пытаюсь получить URL изображения в API страниц остального фреймворка (localhost:8000/api/v2/pages/[page-id]
). Но эти страницы API только дает идентификатор изображения загруженных изображений следующим образом
{
"type": "avengers",
"value": {
"title": "Tony Stark",
"avengers": [
{
"image": 1, /******* this is the image id returned ********/
"title": "Iron Man",
"text": "Iron man is now in framework"
}
]
},
"id": "2f27cb24"
}
Если я получаю доступ к изображениям API (http://localhost:8000/api/v2/images/1/
), я получаю download_url
следующим образом
{
"id": 1,
"meta": {
"type": "wagtailimages.Image",
"detail_url": "http://localhost/api/v2/images/1/",
"tags": [],
"download_url": "/media/original_images/avenger.jpeg"
},
"title": "avenger.jpeg",
"width": 400,
"height": 400
}
У меня вопрос, как я могу получить download_url
или URL-адрес изображения в API страниц (localhost:8000/api/v2/pages/[page-id]
)
Мой streamfields blocks.py для блока Мстители выглядит следующим образом
class AvengersBlock(blocks.StructBlock):
title = blocks.CharBlock(required=True, help_text="Add your title")
Avengers = blocks.ListBlock(
blocks.StructBlock(
[
("image", ImageChooserBlock(required=True)),
("title", blocks.CharBlock(required=True, max_length=40)),
("text", blocks.TextBlock(required=True, max_length=200))
]
)
)
class Meta: # noqa
template = "streams/Avengers_block.html"
icon = "placeholder"
label = "Avengers"
Это поле потока используется в типах содержимого model.py следующим образом
from django.db import models
from wagtail.admin.edit_handlers import FieldPanel, StreamFieldPanel
from wagtail.core.fields import StreamField
from wagtail.core.models import Page
from wagtail.api import APIField
from apps.common.streams import blocks
class AvengersPage(Page):
tempalte = "avengers/avengers_page.html"
content = StreamField(
[
("avengers", blocks.AvengersBlock())
],
null=True,
blank=True,
)
subtitle = models.CharField(max_length=100, null=True, blank=True)
content_panels = Page.content_panels + [
FieldPanel("subtitle"),
StreamFieldPanel("content"),
]
api_fields = [
APIField("subtitle"),
APIField("content")
]
class Meta: # noqa
verbose_name = "Avengers Page"