Skip to main content

wagtail-mptt-comments

Nested, threaded comments with MPTT hierarchy, multi-layer anti-spam protection, and an AJAX bulk moderation dashboard for Wagtail CMS.

Wagtail Comments Tree Preview Wagtail Comments Form Preview

Features

  • Hierarchical Threading: Fast nested comment trees powered by django-mptt, with a configurable max nesting depth.
  • Three-Layer Spam Protection:
    • Transparent honeypot traps.
    • Form submission speed verification (blocks instant bot auto-fillers).
    • Built-in lightweight math captcha for guest commentators.
  • Author Roles & Badges: Automatically distinguishes guests, registered members, moderators, and admins based on is_staff/is_superuser and configurable moderator groups — rendered as a role badge next to each comment.
  • Theme-Aware Avatars: Uses the user's profile picture when available, or a neutral inline SVG placeholder that inherits its color via currentColor — so it stays readable on any background, light or dark, instead of a hardcoded PNG silhouette.
  • Deep Linking: Every comment gets a real id="comment-<pk>" anchor, so links like /page/#comment-42 (used after posting a reply, or shared directly) actually scroll to and highlight the right comment.
  • Reply Notifications: Optional "notify me on reply" checkbox — when someone replies to a comment, its author gets an email if they opted in.
  • Wagtail Admin Dashboard:
    • List and interactive tree moderation views.
    • AJAX bulk approval and deletion.
    • In-place admin responses, shown publicly beneath the original comment.
    • Fully theme-aware admin UI — respects Wagtail's light/dark theme instead of imposing its own palette.
  • WYSIWYG Rich Text: Integrated with django-prose-editor (bold, italics, quotes, lists, links, code blocks).
  • Ready-to-use Frontend Styles: Clean, modular CSS themed entirely through CSS custom properties (--mptt-accent, --mptt-bg, etc.) — override them from your own stylesheet to match your site's palette in a couple of lines.

Admin Moderation Dashboard Admin Moderation Dashboard Tree

Installation

pip install wagtail-mptt-comments

Add required apps to INSTALLED_APPS in your settings.py:

INSTALLED_APPS = [
    ...
    "mptt",
    "wagtail_mptt_comments",
    ...
]

Include URLs in urls.py:

from django.urls import include, path

urlpatterns = [
    ...
    path("comments/", include("wagtail_mptt_comments.urls")),
    ...
]

Run database migrations:

python manage.py migrate

Optional settings

# settings.py

# Send an email to DEFAULT_FROM_EMAIL whenever a new comment is posted.
COMMENTS_NOTIFY_ADMINS = True

# Auto-approve guest comments instead of sending them to moderation.
# Authenticated users are always auto-approved.
COMMENTS_MODERATION = True  # default: True (guests go to moderation)

# Group names whose members get the "Moderator" badge on their comments.
COMMENTS_MODERATOR_GROUPS = ["Moderators"]

SITE_NAME = "My Site"
DEFAULT_FROM_EMAIL = "noreply@example.com"

Rendering in Templates

In your page template (e.g. blog_page.html), simply load the tags and call render_comments:

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

{% block content %}
    <h1>{{ page.title }}</h1>
    
    <!-- This tag automatically loads the CSS, the comment tree, and the reply form -->
    {% render_comments page %}
{% endblock %}

### Theming

Override the CSS custom properties from your own stylesheet (loaded *after* `comments.css`) to match your site's design — no need to touch the plugin's files:

```css
.article-container {
    --mptt-bg: #1c2226;
    --mptt-card-bg: #1c2226;
    --mptt-accent: #0e8a86;
    --mptt-accent-hover: #26b5a9;
    --mptt-text: #eaeef0;
    --mptt-border: #2c3437;
}

Wagtail Prose Editor with Image Chooser

Wagtail Image Navigator Dashboard

Case Study & Background

Read the full story behind the migration and architecture on our blog: Vs-Svet.ru / ZenWay.ru.

Metadata

Release files for wagtail-mptt-comments 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wagtail-mptt-comments 0.1.3
File Size Uploaded
wagtail_mptt_comments-0.1.3.tar.gz 44.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wagtail-mptt-comments 0.1.3
File Interpreter ABI Platform
wagtail_mptt_comments-0.1.3-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 98.4 kB

Release files / wagtail_mptt_comments-0.1.3.tar.gz

Download URL wagtail_mptt_comments-0.1.3.tar.gz
Size 44.9 kB
Tags Source
SHA-256 checksum
How to use checksums
5481c0ebfe74587b693e5c9adbc5eb8b78f67428849183a40793ff2ba81983c0
BLAKE2b-256 checksum
How to use checksums
5bed770b41fa858f72039fa2d7b687eab3846ac03c0bdfd8b39f96174c0bb245
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.34.2

Release files / wagtail_mptt_comments-0.1.3-py2.py3-none-any.whl

Download URL wagtail_mptt_comments-0.1.3-py2.py3-none-any.whl
Size 53.6 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
488d8bc31126819c3af1da2b57b9eb9b1089978e3d509e387b2bb276ad06b144
BLAKE2b-256 checksum
How to use checksums
f5cf57ce119cf29436252f86e98bc682f11eb3295154a3858aa56c2d6dce97c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.34.2

Release history Release notifications | RSS feed

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page