tinymce
official link
django-tinymce doc
- wysiwyg rich-text embeddable editor
- tinymce 사용하는 YT Link
how to use it inside the admin site?#
admin site에서는 자동으로 django.contrib.admin
템플릿이 얘를 렌더해주기 때문에 모델 필드에 딱 한 줄만 적으면 됐었다.
class Article(models.Model):
...
content = tinymce.models.HTMLField()
...
how to use it outside the admin site?#
문서가 오지게 불친절하고, 심지어 쓸데도 없는 FlatPage
에 의존하는 코드를 넣어놔서 한참을 헤맸다. 그래도 한 마디로 정리하자면,
[!NOTE]
django-tinymce
모듈은 미리 정의된 Form Widget이다
필요한 작업만 쏙쏙 뽑아서 정리해보자.
pip install django-tinymce
in settings.py
INSTALLED_APPS = [
...
"tinymce",
...
]
...
# cdn
TINYMCE_JS_URL = 'https://cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js'
# installation
TINYMCE_JS_URL = os.path.join(STATIC_URL, "path/to/tiny_mce/tiny_mce.js")
in core/urls.py
urlpatterns = patterns[
...
path("tinymce/", include("tinymce.urls")),
...
]
in template file which depends on tinymce form
<head>
...
{{ form.media }}
</head>
in forms.py
그러니까, 우리가 평소 쓰는 Form과 똑같은데, tinymce를 쓰는 필드에만 widget
을 붙인다고 보면 된다.
class NewArticleForm(forms.ModelForm):
"""TinyMCE widget"""
class Meta:
model = Article
widgets = {"content": TinyMCE(attrs={"cols": 80, "rows": 30})}
fields = ["title", "content", "category"]