Интеграция Wagtail в проект Django
Wagtail предоставляет команду wagtail start и шаблон проекта, чтобы быстро начать работу с новым проектом Wagtail, но также легко интегрировать Wagtail в существующий проект Django.
Wagtail в настоящее время совместим с Django 3.2 и 4.0. Сначала установите пакет wagtail из PyPI:
$ pip install wagtail
или добавьте пакет в ваш существующий файл requirements. Это также установит библиотеку Pillow в качестве зависимости, которая требует libjpeg и zlib — см. инструкции по установке для вашей платформы библиотеки Pillow.
Настройки
В файле настроек добавьте следующие приложения в 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', 'modelcluster', 'taggit',
Добавьте следующую запись в MIDDLEWARE:
'wagtail.contrib.redirects.middleware.RedirectMiddleware',
Добавьте настройку STATIC_ROOT, если она еще не существует в вашем проекте:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Добавьте настройки MEDIA_ROOT и MEDIA_URL, если они еще не существуют в вашем проекте:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/'
Добавьте WAGTAIL_SITE_NAME, которая будет отображаться на главной панели администрирования Wagtail:
WAGTAIL_SITE_NAME = 'My Example Site'
Доступны различные другие настройки для конфигурации поведения Wagtail — см. Настройки.
Конфигурация URL
Теперь внесите следующие изменения в ваш файл urls.py:
from django.urls import path, include
from wagtail.admin import urls as wagtailadmin_urls
from wagtail import urls as wagtail_urls
from wagtail.documents import urls as wagtaildocs_urls
urlpatterns = [
...
path('cms/', include(wagtailadmin_urls)),
path('documents/', include(wagtaildocs_urls)),
path('pages/', include(wagtail_urls)),
...
]
Пути URL здесь можно изменить по необходимости, чтобы они соответствовали схеме URL вашего проекта.
wagtailadmin_urls предоставляет интерфейс администрирования для Wagtail. Он отделен от интерфейса администрирования Django (django.contrib.admin); в проектах, использующих только Wagtail, администрирование Wagtail обычно размещается по адресу /admin/, но если это конфликтует с существующим интерфейсом администрирования вашего проекта, можно использовать альтернативный путь, например, /cms/.
wagtaildocs_urls — это место, откуда будут обслуживаться файлы документов. Это можно опустить, если вы не планируете использовать функции управления документами Wagtail.
wagtail_urls — это базовое местоположение, откуда будут обслуживаться страницы вашего сайта Wagtail. В приведенном примере Wagtail будет обрабатывать URL-адреса под /pages/, оставляя корневой URL-адрес и другие пути для обработки стандартным образом вашим проектом Django. Если вы хотите, чтобы Wagtail обрабатывал весь URL-пространство, включая корневой URL-адрес, это можно заменить на:
path('', include(wagtail_urls)),
В этом случае это должно быть помещено в конец списка urlpatterns, чтобы не переопределять более конкретные шаблоны URL.
Наконец, ваш проект должен быть настроен на обслуживание загружаемых пользователем файлов из MEDIA_ROOT. Возможно, ваш проект Django уже имеет это, но если нет, добавьте следующий фрагмент в urls.py:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Обратите внимание, что это работает только в режиме разработки (DEBUG = True); в рабочей среде вам необходимо настроить веб-сервер для обслуживания файлов из MEDIA_ROOT. Дополнительные сведения см. в документации Django: Обслуживание файлов, загруженных пользователем, во время разработки и Развертывание статических файлов.
После такой настройки вы готовы запустить ./manage.py migrate для создания таблиц базы данных, используемых Wagtail.
Пользовательские учетные записи
Пользователи с правами суперпользователя получают автоматический доступ к интерфейсу администрирования Wagtail; используйте ./manage.py createsuperuser, если у вас его еще нет. Поддерживаются пользовательские модели пользователей с некоторыми ограничениями; Wagtail использует расширение фреймворка разрешений Django, поэтому ваша модель пользователя должна, как минимум, наследоваться от AbstractBaseUser и PermissionsMixin.
Начало разработки
Теперь вы готовы добавить новое приложение в ваш проект Django (через ./manage.py startapp — не забудьте добавить его в INSTALLED_APPS) и настроить модели страниц, как описано в Вашем первом сайте Wagtail.
Обратите внимание, что есть небольшое отличие, если вы не используете шаблон проекта Wagtail: Wagtail создаёт начальную домашнюю страницу базового типа Page, которая не включает какие-либо поля содержимого помимо заголовка. Вы, вероятно, захотите заменить её на свою собственную модель HomePage — при этом убедитесь, что вы настроили запись сайта (в разделе Настройки/сайты в админ-панели Wagtail), чтобы она указывала на новую домашнюю страницу.
© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v3.0.3/getting_started/integrating_into_django.html