Wagtail을 Django 프로젝트에 통합하기¶
Wagtail은 새로운 Wagtail 프로젝트를 가능한 한 빨리 시작할 수 있도록 wagtail start 명령과 프로젝트 템플릿을 제공하지만, 기존 Django 프로젝트에도 Wagtail을 쉽게 통합할 수 있습니다.
참고
스탠드얼론 Wagtail 프로젝트를 만들 계획이 없더라도 시작하기 튜토리얼을 통해 학습하는 것을 강력히 권장합니다. 이렇게 하면 Wagtail 개념을 잘 이해할 수 있습니다.
Wagtail은 현재 Django 4.2, 5.1 및 5.2와 호환됩니다. 먼저 PyPI에서 wagtail 패키지를 설치합니다:
pip install wagtail
또는 기존 요구 사항 파일에 패키지를 추가합니다. 이렇게 하면 Pillow 라이브러리도 종속성으로 설치되며, libjpeg 및 zlib가 필요합니다. 자세한 내용은 Pillow의 플랫폼별 설치 지침을 참조하십시오.
설정¶
settings.py 파일에 다음 앱을 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/'
DATA_UPLOAD_MAX_NUMBER_FIELDS 설정을 10000 이상으로 설정합니다. 이는 폼 제출에서 허용되는 최대 필드 수를 지정하며, Wagtail의 페이지 편집기에서 특히 복잡한 페이지 모델이 이 제한을 초과할 수 있으므로 Django의 기본값인 1000에서 늘리는 것이 좋습니다:
DATA_UPLOAD_MAX_NUMBER_FIELDS = 10_000
WAGTAIL_SITE_NAME 을 추가합니다. 이 이름은 Wagtail 관리 백엔드의 기본 대시보드에 표시됩니다:
WAGTAIL_SITE_NAME = 'My Example Site'
WAGTAILADMIN_BASE_URL 을 추가합니다. 이는 Wagtail 관리 사이트에서 사용되는 기본 URL입니다. 일반적으로 알림 이메일에 포함할 URL을 생성하는 데 사용됩니다:
WAGTAILADMIN_BASE_URL = 'http://example.com'
이 설정이 없으면 Wagtail은 request.site.root_url 또는 요청의 호스트 이름으로 대체됩니다. 이 설정은 엄격하게 필수는 아니지만, 생략하면 알림 이메일에 사용할 수 없는 URL이 생성될 수 있으므로 강력히 권장됩니다.
WAGTAILDOCS_EXTENSIONS 설정을 추가하여 Wagtail이 문서로 업로드할 수 있는 파일 형식을 지정합니다. 모든 파일 형식을 허용하도록 생략할 수 있지만, 신뢰할 수 없는 사용자가 문서를 업로드하도록 허용하면 보안 위험이 발생할 수 있습니다. 자세한 내용은 사용자 업로드 파일를 참조하십시오.
WAGTAILDOCS_EXTENSIONS = ['csv', 'docx', 'key', 'odt', 'pdf', 'pptx', 'rtf', 'txt', 'xlsx', 'zip']
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/ 와 같은 대체 경로를 사용할 수 있습니다.
Wagtail은 wagtaildocs_urls 위치에서 문서 파일을 제공합니다. Wagtail의 문서 관리 기능을 사용할 계획이 없는 경우 이 설정을 생략할 수 있습니다.
Wagtail은 wagtail_urls 위치에서 페이지를 제공합니다. 위 예제에서 Wagtail은 /pages/ 아래의 URL을 처리하고, Django 프로젝트는 루트 URL 및 기타 경로를 정상적으로 처리합니다. Wagtail이 루트 URL을 포함한 전체 URL 공간을 처리하도록 하려면 path('', include(wagtail_urls)) 를 urlpatterns 목록의 끝에 배치합니다. 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 설명서를 참조하십시오: 개발 중 사용자 업로드 파일 제공 및 정적 파일 배포.
이 구성이 완료되면 python manage.py migrate 를 실행하여 Wagtail에서 사용하는 데이터베이스 테이블을 생성할 준비가 된 것입니다.
사용자 계정¶
Wagtail은 기본적으로 Django의 기본 사용자 모델을 사용합니다. 슈퍼유저 계정은 Wagtail 관리 인터페이스에 자동으로 접근할 수 있습니다. 아직 없는 경우 python manage.py createsuperuser 를 사용하십시오. Wagtail은 일부 제한 사항이 있는 사용자 정의 사용자 모델을 지원합니다. Wagtail은 Django의 권한 프레임워크를 확장하므로 사용자 모델은 최소한 AbstractBaseUser 및 PermissionsMixin 을 상속해야 합니다.
페이지 모델 정의 및 개발 시작¶
페이지를 생성하기 전에 첫 번째 Wagtail 사이트에 설명된 대로 하나 이상의 페이지 모델을 정의해야 합니다. wagtail start 프로젝트 템플릿은 초기 HomePage 모델을 포함하는 home 앱과 홈페이지를 생성하고 Wagtail이 이를 사용하도록 구성하는 마이그레이션을 제공합니다. 기존 프로젝트에 Wagtail을 통합하는 경우 python manage.py startapp 을 통해 이 앱을 직접 생성해야 합니다. (settings.py 파일의 INSTALLED_APPS 에 추가하는 것을 잊지 마십시오.)
초기 “새로운 Wagtail 사이트에 오신 것을 환영합니다!” 페이지는 기본 Page 모델을 사용하는 플레이스홀더이며 직접 사용할 수 없습니다. 자체 홈 페이지 모델을 정의한 후 Wagtail 관리 인터페이스를 통해 루트 수준에 새 페이지를 생성하고 이를 사이트의 홈 페이지로 설정(설정 / 사이트 아래)해야 합니다. 그런 다음 플레이스홀더 페이지를 삭제할 수 있습니다.