Django 19. Визуальный редактор CKEditor5
В этом посте добавим к нашему проекту визуальный редактор CKeditor5
Все статьи
- 25 Июль 2024 Django 44. Отправка электронной почты в фоновом режиме Комментарии к посту
- 18 Июль 2024 Django 43. Подключаем Celery и Redis для фоновой отправки почты Комментарии к посту
- 06 Июнь 2024 Django 42. Запуск Django-проекта на VPS Комментарии к посту
- 03 Апрель 2024 Django 41. Комментарии к постам Комментарии к посту
- 25 Январь 2024 Django 40. Собственные страницы ошибок Комментарии к посту
- 09 Январь 2024 Django 39. Капча и подтверждение регистрации по email Комментарии к посту
- 19 Декабрь 2023 Django 38.2. Добавление, редактирование, удаление поста Комментарии к посту
- 14 Декабрь 2023 Django 38.1. Кабинет и все посты автора Комментарии к посту
- 28 Ноябрь 2023 Django 37. Две формы - добавление категории и файла Комментарии к посту
- 13 Ноябрь 2023 Django 36. Добавление постов пользователем Комментарии к посту
- 31 Октябрь 2023 Django 35.2. Расширенный профиль пользователя - форма и шаблон Комментарии к посту
- 29 Октябрь 2023 Django 35.1. Расширенный профиль пользователя - модель и сигналы Комментарии к посту
- 25 Октябрь 2023 Django 34.2. Простой профиль пользователя - страница настроек Комментарии к посту
- 23 Октябрь 2023 Django 34.1. Простой профиль пользователя - страница профиля Комментарии к посту
- 20 Октябрь 2023 Django 33. Сброс пароля пользователя Комментарии к посту
- 12 Октябрь 2023 Django 32. Форма регистрации Комментарии к посту
- 09 Октябрь 2023 Django 31. Форма авторизации и кнопка выхода Комментарии к посту
- 29 Сентябрь 2023 Django 30. Рефакторинг и допущенные ошибки Комментарии к посту
- 16 Сентябрь 2023 Django 29.2 Добавляем поиск на сайт, продолжение Комментарии к посту
- 14 Сентябрь 2023 Django 29.1 Добавляем поиск на сайт Комментарии к посту
- 08 Сентябрь 2023 Django 28. Добавляем пагинацию на сайт Комментарии к посту
- 06 Сентябрь 2023 Django 27.2 Представления на основе классов - Практика Комментарии к посту
- 06 Сентябрь 2023 Django 27.1 Представления на основе классов Комментарии к посту
- 06 Сентябрь 2023 Django 26. Контекстные процессоры Комментарии к посту
- 06 Сентябрь 2023 Django 25. Добавляем теги к постам Комментарии к посту
- 06 Сентябрь 2023 Django 24. Связь модели файла и поста Комментарии к посту
- 06 Сентябрь 2023 Django 23. Добавляем sitemap и счётчики Комментарии к посту
- 06 Сентябрь 2023 Django 22. Представление для страницы поста Комментарии к посту
- 05 Сентябрь 2023 Django 21. Регистрация модели поста Комментарии к посту
- 05 Сентябрь 2023 Django 20. Модель поста Комментарии к посту
- 05 Сентябрь 2023 Django 19. Визуальный редактор CKEditor5 Комментарии к посту
- 05 Сентябрь 2023 Django 18. Представление для главной и категорий Комментарии к посту
- 05 Сентябрь 2023 Django 17. Разделение шаблонов Комментарии к посту
- 05 Сентябрь 2023 Django 16. Модель категорий Комментарии к посту
- 05 Сентябрь 2023 Django 15. Пишем API - Добавление пользователя Комментарии к посту
- 05 Сентябрь 2023 Django 14. Модель пользователя бота Комментарии к посту
- 02 Сентябрь 2023 Django 13. Сброс пароля Комментарии к посту
- 02 Сентябрь 2023 Django 12. Настройка отправки почты Комментарии к посту
- 10 Август 2023 Django 11. Пишем API - Обработчик запросов Комментарии к посту
- 10 Август 2023 Django 10. Пишем API - Сериализатор Комментарии к посту
- 08 Август 2023 Django 9. Регистрация модели Комментарии к посту
- 08 Август 2023 Django 8. Первая модель Комментарии к посту
- 03 Август 2023 Django 7. Первое представление Комментарии к посту
- 03 Август 2023 Django 6. Базовый шаблон Комментарии к посту
- 30 Июль 2023 Django 5. Инициализация приложения блога Комментарии к посту
- 27 Июль 2023 Django 4. Суперпользователь и первый запуск Комментарии к посту
- 26 Июль 2023 Django 3. Базовая конфигурация Комментарии к посту
- 26 Июль 2023 Django 2. Создание проекта Комментарии к посту
- 23 Июль 2023 Django 1. Установка Django Комментарии к посту
Дополнительные материалы
Для скачивания материалов необходимо войти или зарегистрироваться
Файлы также можно получить в Telegram-боте по коду: 883614
Реклама
Что бы посты выглядели прилично, с форматированием и рюшечками, установим визуальный редактор. Ранее, я использовал CKEditor
, но в этот раз, решил опробовать CKEditor5
.
Установка CKEditor5.
Установим библиотеку pip install django-ckeditor-5
.
Далее необходимо сразу добавить установленную библиотеку django-ckeditor-50.2.8
в requirements.txt
. Также добавить django_ckeditor_5
в INSTALLED_APPS
.
Не уходя из файла settings.py
, в самый конец добавим конфигурацию:
# CKEditor 5
customColorPalette = [
{"color": "hsl(4, 90%, 58%)", "label": "Red"},
{"color": "hsl(340, 82%, 52%)", "label": "Pink"},
{"color": "hsl(291, 64%, 42%)", "label": "Purple"},
{"color": "hsl(262, 52%, 47%)", "label": "Deep Purple"},
{"color": "hsl(231, 48%, 48%)", "label": "Indigo"},
{"color": "hsl(207, 90%, 54%)", "label": "Blue"},
]
CKEDITOR_5_CUSTOM_CSS = 'django_ckeditor_5/admin_dark_mode_fix.css'
CKEDITOR_5_FILE_STORAGE = "blog.storage.CustomStorage"
CKEDITOR_5_CONFIGS = {
"default": {
"language": "ru",
'toolbar': {
'items': [
'|', 'heading',
'|', 'outdent', 'indent',
'|', 'bold', 'italic', 'link', 'underline', 'strikethrough', 'code', 'subscript', 'superscript',
'highlight',
'|', 'codeBlock', 'insertImage', 'bulletedList', 'numberedList', 'todoList',
'|', 'blockQuote',
'|', 'fontSize', 'fontFamily', 'fontColor', 'fontBackgroundColor', 'mediaEmbed', 'removeFormat',
'insertTable',
'|',
],
'shouldNotGroupWhenFull': True
},
"image": {
"toolbar": [
'|', "imageTextAlternative",
"|", "imageStyle:alignLeft", "imageStyle:alignRight", "imageStyle:alignCenter", "imageStyle:side",
"|", "toggleImageCaption",
"|"
],
"styles": [
"full",
"side",
"alignLeft",
"alignRight",
"alignCenter",
],
},
"table": {
"contentToolbar": [
"tableColumn",
"tableRow",
"mergeTableCells",
"tableProperties",
"tableCellProperties",
],
"tableProperties": {
"borderColors": customColorPalette,
"backgroundColors": customColorPalette,
},
"tableCellProperties": {
"borderColors": customColorPalette,
"backgroundColors": customColorPalette,
},
},
"list": {
"properties": {
"styles": True,
"startIndex": True,
"reversed": True,
}
},
},
}
Исправление для тёмной темы панели администратора Django.
Переменная CKEDITOR_5_CUSTOM_CSS
задаёт пользовательские стили.
Если вы используете тёмную тему панели администратора, то в директории static
необходимо создать директорию django_ckeditor_5
и в ней создать файл admin_dark_mode_fix.css
со следующим содержимым:
.ck.ck-editor {
color: black !important;
}
Переопределение директории сохранения изображений.
По умолчанию, редактор сохраняет изображения в корне директории media
, что безусловно не удобно.
Для того, что бы реализовать сохранение изображений в директориях post/%Y/%m/%d
, служит параметр CKEDITOR_5_FILE_STORAGE
. В нём определяется обработчик для сохранения файлов. Если у вас названия проекта совпадают, с моими, менять ничего не надо, если же не совпадают, то измените на соответствующие.
Создадим обработчик. Для этого перейдём в директорию приложения и создадим файл storage.py
.
В файле пропишем следующий код:
import os
from datetime import datetime
from urllib.parse import urljoin
from django.conf import settings
from django.core.files.storage import FileSystemStorage
class CustomStorage(FileSystemStorage):
"""Пользовательское хранилище для изображений."""
date = datetime.now().strftime('%Y/%m/%d')
location = os.path.join(settings.MEDIA_ROOT, f"post/{date}/")
base_url = urljoin(settings.MEDIA_URL, f"post/{date}/")
URL-паттерн для редактора.
Настройки почти окончены, осталось прописать URL-паттерн. Перейдём в urls.py
в директории проекта и добавим в конец списка urlpatterns
следующую строку:
path("ckeditor5/", include('django_ckeditor_5.urls'), name="ck_editor_5_upload_file"),
Дополнение.
Тем, кто читает данный пост, только, что бы узнать как установить редактор:
Для того, что бы форматированный в редакторе текст отображался на страницах сайта корректно, в шаблоне в теге вывода переменной с текстом, например, {{ post.body }}
необходимо добавить фильтр safe
.
Должно быть вот так: {{ post.body | safe }}
.
Обновление 22.07.2024.
В последней (на данный момент) версии библиотеки django-ckeditor-5==
0.2.13
наблюдаются проблема с загрузкой изображений отличного от png
формата. Решается достаточно просто - необходимо в файле settings.py
добавить новый параметр с перечислением допустимых форматов:
CKEDITOR_5_UPLOAD_FILE_TYPES = ['jpeg', 'jpg', 'png']
Комментарии
-
-
21 июля 2024 г. 11:57
Приветствую.
Всё хорошо, но почему-то картинки загружаются только в .png формате. если попробовать .jpg, то на странице выдает "Couldn't upload file: 2.jpg.", в консоли пишет: Not Found: /ckeditor5/image_upload/.
django 4.2, pip install django-ckeditor-5==0.2.13 -
22 июля 2024 г. 21:09
Добавил обновление с информацией по исправлению.
AlexeyMmm
20 августа 2024 г. 8:38
Приветствую.
еще вопрос по django-ckeditor-5: когда в нем делаешь ссылки (link) то они открываются в том же окне. Можно как то сделать, чтобы ссылки открывались в новой вкладке (атрибут target = _blank)?
Заранее благодарен!
Войдите чтобы добавить комментарий.