Spec-Zone.ru › Wagtail 2

Интеграция Wagtail в проект Django

Wagtail предоставляет команду wagtail start и шаблон проекта, чтобы быстро начать работу с новым проектом Wagtail, но также легко интегрировать Wagtail в существующий проект Django.

Wagtail в настоящее время совместим с Django 3.2 и 4.0. Сначала установите пакет wagtail с PyPI:

$ pip install wagtail

или добавьте пакет в ваш существующий файл requirements. Это также установит библиотеку Pillow в качестве зависимости, которая требует libjpeg и zlib — см. инструкции по установке, зависящие от платформы.

Настройки

В вашем файле настроек добавьте следующие приложения в 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.core',

'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'

Добавьте настройку WAGTAILSEARCH_BACKENDS для включения полнотекстового поиска:

WAGTAILSEARCH_BACKENDS = {
    'default': {
        'BACKEND': 'wagtail.search.backends.database',
    }
}

Доступны различные другие настройки для конфигурации поведения Wagtail — см. Настройки.

Конфигурация URL

Теперь внесите следующие изменения в ваш файл urls.py:

from django.urls import path, include

from wagtail.admin import urls as wagtailadmin_urls
from wagtail.core 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), чтобы она указывала на новую домашнюю страницу.

  • Предыдущая Демонстрационный сайт
  • Следующая Дзен Wagtail

Содержание страницы

  • Интеграция Wagtail в проект Django
    • Настройки
    • Конфигурация URL
    • Учетные записи пользователей
    • Начало разработки

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v2.16.3/getting_started/integrating_into_django.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API