Prezentace KPS

Wagtail CMS

Moderní redakční systém postavený na Pythonu a Djangu

Prezentace o open-source CMS Wagtail: instalace, vytvoření prvního webu, vlastnosti a možnosti. Wagtail dnes používají NASA, Google, Mozilla i britská státní správa.

Co je redakční systém (CMS)

Redakční systém je software, který umožňuje uživatelům bez znalosti programování vytvářet, upravovat a publikovat digitální obsah – zejména webové stránky. Klíčem je oddělení obsahu od prezentace: redaktoři pracují v přívětivém rozhraní, šablony a kód spravují vývojáři.

Co je Wagtail

Wagtail je open-source CMS napsaný v Pythonu a postavený nad webovým frameworkem Django. Vyvinula ho britská agentura Torchbox v roce 2014 a dnes ho používají NASA, Google, Mozilla, NHS nebo British Council. Licence je MIT – tedy zdarma i pro komerční použití.

Klíčové vlastnosti

Mezi nejdůležitější vlastnosti patří:

  • StreamField – flexibilní bloky pro skládání obsahu
  • Vestavěná knihovna obrázků s automatickým generováním variant
  • Plná podpora vícejazyčnosti
  • Fulltextové vyhledávání
  • Schvalovací workflow a verzování stránek
  • REST a GraphQL API z krabice

Instalace krok za krokem

Instalace zabere pár minut. Postup je následující:

# 1) Virtuální prostředí Pythonu
python -m venv venv
source venv/bin/activate

# 2) Instalace Wagtailu
pip install wagtail

# 3) Nový projekt
wagtail start mojeweb
cd mojeweb
pip install -r requirements.txt

# 4) Migrace databáze a vytvoření admina
python manage.py migrate
python manage.py createsuperuser

# 5) Spuštění vývojového serveru
python manage.py runserver

Vytvoření prvního obsahu – Page model

Každý typ stránky je v Wagtailu definován jako Python třída dědící z Page. Pole stránky jsou definovaná jako atributy modelu.

from wagtail.models import Page
from wagtail.fields import RichTextField
from wagtail.admin.panels import FieldPanel

class BlogPage(Page):
    intro = RichTextField(blank=True)
    body  = RichTextField()

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

Šablona pro stránku

Šablona se uloží podle názvu třídy v snake_case podobě – tedy například blog/blog_page.html.

{% extends "base.html" %}
{% load wagtailcore_tags %}

{% block content %}
  <h1>{{ page.title }}</h1>
  <div class="intro">{{ page.intro|richtext }}</div>
  <div class="body">{{ page.body|richtext }}</div>
{% endblock %}

StreamField – flexibilní obsah

StreamField je speciální pole, v němž redaktor řadí libovolné bloky obsahu – odstavec, obrázek, citát, video, kód, vlastní komponentu – v libovolném pořadí a počtu. Konec rigidních šablon!

Výhody a nevýhody

Výhody: open-source MIT licence, vyzrálé Django prostředí, maximální flexibilita, REST + GraphQL API, skvělý vývojářský zážitek.

Nevýhody: vyžaduje znalost Pythonu a Djanga, vyšší vstupní práh než WordPress, méně hotových šablon, hosting složitější než u PHP.

Užitečné odkazy

wagtail.org – oficiální web
docs.wagtail.org – dokumentace
github.com/wagtail/wagtail – zdrojový kód
madewithwagtail.org – galerie webů

← Zpět na přehled prezentací