기술블로그-Django편

📌 Django-summernote - WYSIWYG 에디터 통합 가이드

Chansman 2025. 5. 16. 15:52

📌 Django-summernote - WYSIWYG 에디터 통합 가이드


✨ django-summernote란?

django-summernote는 Django 프로젝트에 WYSIWYG(What You See Is What You Get) 에디터를 간편하게 통합할 수 있게 해주는 라이브러리입니다. 사용자는 HTML을 몰라도 글을 시각적으로 작성할 수 있어 게시판, 블로그, 관리자 에디터 등에 많이 사용됩니다.


📌 특징

항목 설명

🌈 직관적인 에디터 이미지 삽입, 글꼴 변경, 링크, 표 등 다양한 기능 제공
📸 이미지 업로드 지원 에디터 내에서 바로 이미지 업로드 가능 (MEDIA 연동 필요)
⚙️ Admin 통합 Django Admin에서 자동 적용 가능
🔗 외부 JS/CSS 의존도 낮음 필요한 라이브러리는 자동으로 포함됨

⚙️ 설치 및 세팅

1. 라이브러리 설치

pip install django-summernote

2. settings.py 설정

INSTALLED_APPS = [
    ...
    'django_summernote',
]

X_FRAME_OPTIONS = 'SAMEORIGIN'  # iframe 사용 허용

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

3. urls.py 설정

from django.conf import settings
from django.conf.urls.static import static
from django.urls import path, include

urlpatterns = [
    path('summernote/', include('django_summernote.urls')),
    ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

🧑‍💻 사용법

1️⃣ 모델에서 사용

from django.db import models
from django_summernote.fields import SummernoteTextField

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = SummernoteTextField()

2️⃣ Admin에서 사용

from django.contrib import admin
from django_summernote.admin import SummernoteModelAdmin
from .models import Post

class PostAdmin(SummernoteModelAdmin):
    summernote_fields = ('content',)

admin.site.register(Post, PostAdmin)

💡 확장 팁

기능 설명

이미지 업로드 제한 최대 크기 및 확장자 제한 가능 (settings.py에서 설정)
Summernote 위젯 forms.py에서 폼 필드에 위젯으로 직접 지정 가능
CDN 사용 외부 리소스를 로딩하지 않고 자체 호스팅도 가능

✅ 정리 요약

항목 설명

django-summernote Django에 WYSIWYG 에디터를 쉽게 추가하는 패키지
주요 기능 시각적 글쓰기, 이미지 업로드, admin 통합
설치 방식 pip 설치 + settings 및 URL 세팅
적용 방법 모델 필드에 SummernoteTextField 사용

django-summernote는 블로그, 게시판, CMS 등에서 빠르게 콘텐츠 입력 기능을 구현할 수 있는 강력한 도구입니다 ✍️