rago1975が自ら環境を構築して執筆するブログ

WagtailはDjango上で動く、柔軟性に富んだCMS

WagtailはPython製WEBフレームワークDjango上で動くコンテンツ・マネージメントシステム(CMS)です。

特徴の一つに、Streamfieldというものがあります(Wagtail プロジェクトによる、Streamfieldの説明)。ページを作成する管理画面(admin)上で、複数のブロックを組み合わせることによって、やや複雑な構成を持つページを作成することができます。例えば、今、この文章はRichTextBlockを使用して、管理画面上のWYSIWYGなエディタで書いています。

こっちの文章はRawHTMLBlockに移って書いています。 コードを書くこともできます。(prism.jsを使用。)


import datetime
from django.db import models
from django.utils.translation import ugettext_lazy as _
from wagtail.admin.edit_handlers import FieldPanel, MultiFieldPanel, InlinePanel, PageChooserPanel, StreamFieldPanel
from wagtail.images.edit_handlers import ImageChooserPanel
from wagtail.core.fields import RichTextField, StreamField
from wagtail.core import blocks
from modelcluster.contrib.taggit import ClusterTaggableManager
from .utils import get_image_model_path

class EntryAbstract(models.Model):
    body = StreamField([
        ('paragraph', blocks.RichTextBlock()),
        ('htmlcode', blocks.RawHTMLBlock()),
    ],verbose_name=_('body'))
    tags = ClusterTaggableManager(through='puput.TagEntryPage', blank=True)
    date = models.DateTimeField(verbose_name=_("Post date"), default=datetime.datetime.today)

ちなみに管理画面はこんな感じです。

190429-1.png

カスタマイズをするためには、ある程度PythonやDjangoの知識が必要です。いずれ、(時間とやる気があれば)色々書いていきたいと思います。