Wagtail API v2.4 - как показать / получить корневой URL для изображения в API - PullRequest
0 голосов
/ 28 февраля 2019

Я новичок в трясогузке, и я создаю сайт с response.js в качестве внешнего интерфейса и трясогузки в качестве внутреннего интерфейса.В первую очередь я использую API и аксиумы трясогузки для визуализации содержимого.Тем не менее, у меня возникли проблемы с получением полного абсолютного URL из API трясогузки для рендеринга изображений.Например, ответ get при вызове URL-адреса: «/media/images/ayoba-desk.2e16d0ba.fill-1500x1500.png».Как мне получить абсолютный URL (т.е. 127.0.0.1:8000/../../)?

Model.py

from django.db import models
from modelcluster.fields import ParentalKey

from wagtail.core.models import Page
from django.db.models import TextField
from rest_framework import serializers
from wagtail.core.fields import RichTextField
from wagtail.admin.edit_handlers import FieldPanel, MultiFieldPanel, InlinePanel
from wagtail.images.edit_handlers import ImageChooserPanel
from wagtail.images.api.fields import ImageRenditionField

from wagtail.search import index
from wagtail.api import APIField


class ProjectsPage(Page):
# db fields
project_h_one = models.CharField(max_length=250, default="Project Name")
project_h_two = models.CharField(
    max_length=250, default="Project Description")
project_intro_p = models.TextField(blank=True)
project_h2_date = models.CharField(
    max_length=250, default="Project Launch Date")
project_p = models.TextField(blank=True)
project_h2_tech_stack = models.CharField(
    max_length=250, default="Tech Stack")
project_tech_stack_description = RichTextField(blank=True, features=["ul"])
project_image = models.ForeignKey(
    'wagtailimages.Image',
    null=True,
    blank=True,
    on_delete=models.SET_NULL,
    related_name='+'
)

# Search index configuration
search_fields = Page.search_fields + [
    index.SearchField('project_h_one'),
    index.FilterField('project_h_two'),
    index.FilterField('project_intro_p'),
    index.FilterField('project_h2_date'),
    index.FilterField('project_p'),
    index.FilterField('project_h2_tech_stack'),
    index.FilterField('project_tech_stack_description'),
]

# Editor panels configuration
content_panels = Page.content_panels + [
    FieldPanel('project_h_one'),
    FieldPanel('project_h_two', classname="full"),
    FieldPanel('project_intro_p', classname="full"),
    FieldPanel('project_h2_date', classname="full"),
    FieldPanel('project_p', classname="full"),
    FieldPanel('project_h2_tech_stack', classname="full"),
    FieldPanel('project_tech_stack_description', classname="full"),
    ImageChooserPanel('project_image'),
]
promote_panels = [
    MultiFieldPanel(Page.promote_panels, "Common page configuration"),
]

# API configuration
api_fields = [
    APIField('project_h_one'),
    APIField('project_h_two'),
    APIField('project_intro_p'),
    APIField('project_h2_date'),
    APIField('project_p'),
    APIField('project_h2_tech_stack'),
    APIField('project_tech_stack_description'),
    APIField('project_image'),
    APIField('project_img', serializer=ImageRenditionField(
        'fill-1500x1500', source='project_image')),

]
...