概要
CMS(Contents Management System:コンテンツ管理システム)をご存知でしょうか?
CMS とは Web サイトのコンテンツを構成するテキストや画像、デザイン、レイアウト情報を一元的に管理するシステムで、主に Web サイトの制作・構築時に関わり合いの深いワードです。
CMS について詳細が知りたい方は以下のサイトを参照ください。
さて本題ですが、最近は副業ブームも相まってブログなどで情報発信されている方も多いと思います。
その際に知らず知らず CMS の助けを借りながらブログ発信をされている方もいらっしゃると思いますが、個人の端末や他社のブログサーバーを使用せずにブログを書きたい方もいるかと思われます。
そんな方のために今回は、Python の Django 製 CMS として有名な OSS「Wagtail」をご紹介します。
こちらの Wagtail はすでに大きなコミュニティと商用サポートを兼ね備えており、快適なユーザーエクスペリエンスを提供しているとあります。
それでは早速詳細についてみていきましょう。
特徴
README.md にも記載されていますが、こちらでも紹介させていただきます。
- コンテンツ制作者にとって高速で魅力的なインターフェース
- フロントエンドの設計と構造を制御
- 数百万のページと数千の編集者に対応
- フロントエンドが分離されたヘッドレスサイトようの Content API
- Raspverry Pi またはクラウドプラットフォームで実行可能
- ElasticSearch または PostgreSQL を使用した強力な検索機能
- 画像と埋め込みコンテンツをサポート
- 多言語対応可能
- Django 採用による拡張性
上記以外にもまだまだ特徴があるので、さらに詳細について把握したい場合、以下のサイトを参照してください。
利用手順
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 %}
以上のようにすることで、コンテンツ部を修正できるようになります。
ここでは一例について記述しましたが、まだまだ色々な使い方ができるので、公式サイトを参考に使い倒してください!!
まとめ
今回は Python の Django 製 CMS として有名な OSS「Wagtail」をご紹介しました。
Wagtail は NASA、Google、Oxfam、NHS、Mozilla、MIT、赤十字社、Salesforce、NBC、BMW、および米国とイギリスの政府によって使用されています。
Django 製の CMS を探している方や、自前の CMS を構築したいと考えている方は、世界的にも採用歴のあるこちらの Wagtail を利用されてみてはいかがでしょうか。
ライセンス
BSD 3-Clause "New" or "Revised" License