Мои проекты

Подключаем Commentail к существующему Wagtail

Приложения, middleware, маршруты, миграции и шаблон статьи — по порядку и с проверкой каждого шага.

Урок 2 / 22 · Commentail 1.3.2

У существующего сайта уже есть настройки, маршруты и шаблоны. Мы дополним их. Перед изменением рабочего сайта сделайте резервную копию и повторите подключение на его отдельной копии. Инструкцию восстановления разбираем в уроке 20.

Найдём нужные файлы

Откройте папку с manage.py. Настройки обычно находятся в myproject/settings/base.py или myproject/settings.py; имя проекта у вас будет другим. Используйте тот settings-модуль, с которым запускается ваш сайт. Активируйте его существующее виртуальное окружение и выполните python -m pip install commentail==1.3.2. Сначала сопоставьте версии с таблицей урока 1: установка пакета не заменяет проверку совместимости и не разрешает обновлять весь проект.

В INSTALLED_APPS добавьте отсутствующие commentail и wagtail.contrib.settings. Если используется PostgreSQL, также нужен django.contrib.postgres. Пример ниже показывает добавление; уже существующие записи не дублируйте.

python
# Add only missing apps to the existing list.
INSTALLED_APPS += ["commentail", "wagtail.contrib.settings"]

# Insert this entry immediately before the existing CSRF middleware.
# "commentail.middleware.CapabilityHeadersMiddleware",
# "django.middleware.csrf.CsrfViewMiddleware",

# Optional draft recovery after a rejected CSRF submission.
CSRF_FAILURE_VIEW = "commentail.public.csrf_failure"

Две строки middleware в этом блоке закомментированы специально: найдите существующий список MIDDLEWARE и вставьте настоящую строку "commentail.middleware.CapabilityHeadersMiddleware", непосредственно перед CSRF middleware. Сохраните middleware сессий, авторизации и сообщений. В настройках DjangoTemplates оставьте django.template.context_processors.request.

Подключим адреса и таблицы

В корневом urls.py добавьте маршрут Commentail перед последним маршрутом Wagtail. Остальные маршруты сайта сохраните:

python
from django.urls import include, path
from wagtail import urls as wagtail_urls

urlpatterns = [
    # Keep existing admin and application routes above these entries.
    path("commentail/", include("commentail.urls")),
    path("", include(wagtail_urls)),
]
sh
python manage.py migrate
python manage.py check
python manage.py collectstatic --noinput

Если используете отдельный production settings-модуль, передавайте привычный --settings либо DJANGO_SETTINGS_MODULE. collectstatic собирает CSS и JavaScript; ваш сервер должен раздавать собранную папку STATIC_ROOT через существующую конфигурацию.

Выберем место на странице

В основном шаблоне, обычно templates/base.html, подключите ресурсы один раз: CSS в <head>, JS в согласованном месте базового шаблона.

django
{% load commentail_tags %}
{% commentail_css %}
{% commentail_js %}

В реальном шаблоне статьи, после текста, добавьте:

django
{% load commentail_tags %}
{% commentail page %}

page — объект текущей Wagtail Page. Шаблон с {% extends %} должен помещать виджет внутрь существующего блока, например {% block content %}. {% load commentail_tags %} нужен в каждом файле, который использует теги: загрузка в базовом шаблоне не переносится автоматически в дочерний.

Mixin и поле модели Page не нужны. Если виджет подключён через вычисляемый include, объявите зависимость через GET_COMMENT_TEMPLATES из урока 15.

Проверим подключение

Перезапустите приложение привычным для проекта способом. Убедитесь, что статья опубликована и входит в дерево root page правильного Wagtail Site. В редакторе должна появиться вкладка Comments. Войдите под существующей учётной записью, отправьте текст и одобрите его. Собственной регистрации Commentail не создаёт. Гостей подключайте после настройки почты и обработчика. За nginx сначала настройте доверенный прокси по уроку 19: иначе все посетители могут делить один IP-лимит.

Другие уроки по этой задаче

Документация по теме

Была ли статья полезна?

Комментарии 0

Имя: до 40 символов.

После отправки мы пришлём письмо со ссылкой для подтверждения email.

Не более 5000 символов.

Опубликованных комментариев пока нет.