or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

admin-interface.mdapi.mdcontent-fields.mdcontrib.mdindex.mdmedia.mdpage-models.mdsearch.mdsystem-integration.mdtemplates.mdworkflows.md
tile.json

tessl/pypi-wagtail

A Django content management system with a user-friendly interface and powerful features for building websites and applications.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/wagtail@6.4.x

To install, run

npx @tessl/cli install tessl/pypi-wagtail@6.4.0

index.mddocs/

Wagtail

A Django content management system focused on user experience, offering precise control for designers and developers. Wagtail provides a comprehensive CMS framework with a fast and attractive interface for content authors, complete control over front-end design, and powerful content management capabilities.

Package Information

  • Package Name: wagtail
  • Language: Python
  • Installation: pip install wagtail
  • Documentation: https://docs.wagtail.org

Core Imports

import wagtail
from wagtail.models import Page

Common imports for building pages:

from wagtail.models import Page
from wagtail.fields import RichTextField, StreamField
from wagtail.blocks import CharBlock, TextBlock, StructBlock
from wagtail.admin.panels import FieldPanel, MultiFieldPanel

Basic Usage

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

# Create a basic page model
class BlogPage(Page):
    body = RichTextField(blank=True)
    
    content_panels = Page.content_panels + [
        FieldPanel('body'),
    ]

# In your Django settings
INSTALLED_APPS = [
    'wagtail.contrib.forms',
    'wagtail.contrib.redirects',
    'wagtail.embeds',
    'wagtail.sites',
    'wagtail.users',
    'wagtail.snippets',
    'wagtail.documents',
    'wagtail.images',
    'wagtail.search',
    'wagtail.admin',
    'wagtail',
    
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    # ... other Django apps
]

# URL configuration
from wagtail import urls as wagtail_urls
from wagtail.admin import urls as wagtailadmin_urls

urlpatterns = [
    path('admin/', admin.site.urls),
    path('cms/', include(wagtailadmin_urls)),
    path('', include(wagtail_urls)),
]

Architecture

Wagtail's architecture is built on Django's foundation with key components:

  • Page Models: Hierarchical content structure using Django models with tree-based organization
  • StreamField: Flexible content blocks allowing structured content without rigid templates
  • Admin Interface: React-based admin panel with extensible editing interface
  • Revision System: Complete version control with draft/publish workflow
  • Search Integration: Built-in search using Django ORM, PostgreSQL, or Elasticsearch
  • Collections: Media organization system for images, documents, and snippets
  • Workflows: Approval processes with task-based content moderation
  • Multi-site Support: Single installation managing multiple websites

This design provides a scalable CMS that integrates seamlessly with Django applications while offering rich content management capabilities.

Capabilities

Page Models and Content Structure

Core page functionality including the Page model hierarchy, content fields, and tree-based organization. Provides the foundation for all content in Wagtail.

class Page(MP_Node):
    title: str
    slug: str
    live: bool
    def get_url(self, request=None, current_site=None): ...
    def serve(self, request): ...
    def get_context(self, request): ...

Page Models

Content Fields and Blocks

Flexible content field types including RichTextField and StreamField with structured content blocks for building dynamic page layouts.

class RichTextField(models.TextField):
    def __init__(self, editor='default', features=None, **kwargs): ...

class StreamField(models.Field):
    def __init__(self, block_types, **kwargs): ...

Content Fields

Admin Interface and Panels

Customizable admin interface with panel system for organizing edit forms, menu configuration, and admin UI extensions.

class FieldPanel:
    def __init__(self, field_name, widget=None, **kwargs): ...

class MultiFieldPanel:
    def __init__(self, children, heading='', **kwargs): ...

Admin Interface

Search and Indexing

Full-text search capabilities with configurable backends, search field configuration, and query interfaces.

class SearchField:
    def __init__(self, field_name, partial_match=True, boost=1): ...

class Indexed:
    search_fields: list

Search

Images and Documents

Media management with image processing, renditions, document handling, and collection-based organization.

class Image(AbstractImage):
    def get_rendition(self, filter): ...
    
class Document(AbstractDocument):
    title: str
    file: FileField

Media Management

API Framework

REST API endpoints for headless CMS functionality with serializers for pages, images, and documents.

class PagesAPIViewSet(BaseAPIViewSet):
    def get_queryset(self): ...

class APIField:
    def __init__(self, name, serializer=None): ...

API Framework

Workflows and Publishing

Content approval workflows with task-based moderation, publishing controls, and revision management.

class Workflow(models.Model):
    def start(self, page, user): ...

class Task(models.Model):
    def start(self, workflow_state, user): ...

Workflows

Template Tags and Utilities

Template tags for page URLs, content rendering, and template utilities for building Wagtail-powered front-ends.

def pageurl(page, request=None): ...
def include_block(block_value): ...

Template System

Contrib Modules and Extensions

Additional functionality modules that extend Wagtail's core capabilities with forms, redirects, settings management, and specialized content types.

@register_snippet
class Category(models.Model):
    name: str

class AbstractForm(Page):
    def get_form(self): ...
    def process_form_submission(self, form): ...

Contrib Modules

System Integration

Signals, hooks, and utilities for customizing Wagtail behavior, integrating with external systems, and extending functionality.

@hooks.register('construct_main_menu')
def add_menu_items(request, menu_items): ...

page_published.connect(my_handler)

System Integration