Урок 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. Пример ниже показывает добавление; уже существующие записи не дублируйте.
# 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. Остальные маршруты сайта сохраните:
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)),
]
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 в согласованном месте базового шаблона.
{% load commentail_tags %}
{% commentail_css %}
{% commentail_js %}
В реальном шаблоне статьи, после текста, добавьте:
{% 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-лимит.
Другие уроки по этой задаче
- 1. Commentail с нуля на учебном сайте
- 3. Настройки сайта и путь читателя
- 19. Рабочий сайт: nginx, кеш и данные пользователей
Выберите способ входа или оставьте комментарий как гость ниже.