Wagtail의 SubBlock을 사용해 보았습니다.

In addition to the basic block types above, it is possible to define new block types made up of sub-blocks: for example, a 'person' block consisting of sub-blocks for first name, surname and image, or a 'carousel' block consisting of an unlimited number of image blocks. These structures can be nested to any depth, making it possible to have a structure containing a list, or a list of structures.

... 서브 블록을 사용하면 새로운 블록 유형을 만들 수 있습니다. 예를 들어 "성"블록, "이름"블록, "이미지"블록에서 "인물"블록을 만들 수 있습니다. 무수한 이미지에서 "회전"블록을 만들 수도 있습니다. 이러한 구조는 모든 깊이에 중첩(중첩)할 수 있으며 목록과 하위 구조 목록을 가질 수 있습니다.

나는 bootstrap jumbotron을 만들고 싶었기 때문에 paragraph와 이미지가있는 JumbotronBlock을 만들었습니다.

blog/models.py
...
class JumbotronBlock(blocks.StructBlock):
    paragraph = blocks.RichTextBlock()
    image = ImageChooserBlock()

    class Meta:
        template = 'blog/blocks/jumbotron.html'
...

blog/templates/blog/blocks/jumbotron.html
{% load wagtailcore_tags wagtailimages_tags %}

{% image value.image original as img %}
<div class="jumbotron jumbotron-fluid" style="background-image: url('{{ img.url }}');">
  <div class="container">
    {% include_block value.paragraph %}
  </div>
</div>

blog/models.py
...
class JumbotronPage(Page):
    body = StreamField([
        ('jumbotron', JumbotronBlock()),
    ])

    content_panels = Page.content_panels + [
        StreamFieldPanel('body'),
    ]
...

좋은 웹페이지 즐겨찾기