ソフトウェア開発者のための OSS、まとめてみました!

ソフトウェア開発を行なっている自分が、個人的に面白いと思ったプログラムの最新技術や、オープンソースソフトウェア(OSS)をまとめています!

MENU

Django 製 CMS(コンテンツ管理システム)を試してみたいなら!「Wagtail」

概要

CMS(Contents Management System:コンテンツ管理システム)をご存知でしょうか?

CMS とは Web サイトのコンテンツを構成するテキストや画像、デザイン、レイアウト情報を一元的に管理するシステムで、主に Web サイトの制作・構築時に関わり合いの深いワードです。

CMS について詳細が知りたい方は以下のサイトを参照ください。

www.hitachi-solutions.co.jp

さて本題ですが、最近は副業ブームも相まってブログなどで情報発信されている方も多いと思います。

その際に知らず知らず CMS の助けを借りながらブログ発信をされている方もいらっしゃると思いますが、個人の端末や他社のブログサーバーを使用せずにブログを書きたい方もいるかと思われます。

そんな方のために今回は、PythonDjangoCMS として有名な OSSWagtail」をご紹介します。

こちらの Wagtail はすでに大きなコミュニティと商用サポートを兼ね備えており、快適なユーザーエクスペリエンスを提供しているとあります。

それでは早速詳細についてみていきましょう。

特徴

README.md にも記載されていますが、こちらでも紹介させていただきます。

  • コンテンツ制作者にとって高速で魅力的なインターフェース
  • フロントエンドの設計と構造を制御
  • 数百万のページと数千の編集者に対応
  • フロントエンドが分離されたヘッドレスサイトようの Content API
  • Raspverry Pi またはクラウドプラットフォームで実行可能
  • ElasticSearch または PostgreSQL を使用した強力な検索機能
  • 画像と埋め込みコンテンツをサポート
  • 多言語対応可能
  • Django 採用による拡張性

上記以外にもまだまだ特徴があるので、さらに詳細について把握したい場合、以下のサイトを参照してください。

wagtail.org

利用手順

Wagtail は Python 3 系をインストールしている各プラットフォームで利用可能です。

実際に利用するには以下のコマンドを入力します。

pip install wagtail
wagtail start mysite
cd mysite
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

上記のコマンドを利用して Wagtail を起動することができますが、さらに詳細を把握したい場合は以下の Getting Started Tutorial を参照ください。

使用感

実際に私もサーバーをインストールして使ってみました。

Wagtail のサーバーを起動すると以下のような画面が表示されます。

上図の右下の管理画面にアクセスするリンクをクリックすると管理画面に遷移します(管理画面にログインする際は、superuser を作成時に設定したアカウント名とパスワードを入力します)。

管理画面にログインすると以下のような画面が表示され、デフォルトではあらかじめサンプルページが作成されています。

左側メニューの「Pages」を選択し、開いた画面「Home」をクリックすると以下のような画面が表示され、コンテンツ内容を確認することができます。

一般公開する際の表示内容を確認するには、タイトル下にある「LIVE VIEW」をクリックします。

実際にページのコンテンツを変更したい場合は、管理画面上で編集したいコンテンツにおいて「Edit」ボタンをクリックすると編集することができます。

ただ、デフォルトの状態ではタイトル部しか編集できず、ボディ部を編集する際には以下のようにページの拡張が必要になります。

Wagtail のデフォルトページ(Home)の拡張

デフォルトの場合、「Home」はインデックスのページが表示されており、Django 上の home アプリが表示されている状態です。

そのため、以下のようにhome/models.py のモデルソースコードを拡張する必要があります。

from django.db import models

from wagtail.core.models import Page
from wagtail.core.fields import RichTextField
from wagtail.admin.edit_handlers import FieldPanel


class HomePage(Page):
    body = RichTextField(blank=True)

    content_panels = Page.content_panels + [
        FieldPanel('body', classname="full"),
    ]

モデルを拡張したら、以下のように Djangoマイグレーションを実行します。

python manage.py makemigrations
python manage.py migrate

上記よりモデルの拡張が反映されたので、実際に「Home」ページ部分を、テンプレートファイルを編集して、ボディ部をいじれるようにします。

home/templates/home/home_page.html ファイルを以下のように修正します。

{% extends "base.html" %}

{% load wagtailcore_tags %}

{% block body_class %}template-homepage{% endblock %}

{% block content %}
  <h1>{{ page.title }}</h1>
  <article>{{ page.body|richtext }}</article>
{% endblock %}

以上のようにすることで、コンテンツ部を修正できるようになります。

ここでは一例について記述しましたが、まだまだ色々な使い方ができるので、公式サイトを参考に使い倒してください!!

まとめ

今回は PythonDjangoCMS として有名な OSSWagtail」をご紹介しました。

Wagtail は NASAGoogle、Oxfam、NHS、Mozilla、MIT、赤十字社SalesforceNBCBMW、および米国とイギリスの政府によって使用されています。

Django 製の CMS を探している方や、自前の CMS を構築したいと考えている方は、世界的にも採用歴のあるこちらの Wagtail を利用されてみてはいかがでしょうか。

ライセンス

BSD 3-Clause "New" or "Revised" License

リンク

wagtail.org

github.com