How to add CkEditor in Django
Published May 14, 2024, 5:36 a.m. by cloudblog
Ckeditor, a WYSIWYG rich text editor allows users to write content directly inside web pages or online applications. A Django WYSIWYG editor built upon CKEditor, you can use it as a standalone widget, or use the provided RichTextField or RichTextUploadingField on your models.
Installation and Configuration.
Install django-ckeditor.
pip install django-ckeditor
Note: In this tutorial, I am using django==3.2.15 and django-ckeditor==6.0.0
Please make sure you use the same versions. I tried using django-ckeditor==6.3.2 but RichTextUploadingField field was not appearing in the admin panel. So please follow the same steps and versions.
Add ckeditor in INSTALLED_APPS in your settings.py
# settings.py
INSTALLED_APPS = [
...
'ckeditor',
]
Then set STATIC_ROOT in your settings.py file.
# settings.py
# if you are using pathlib Path STATIC_ROOT = BASE_DIR / 'static'#if you are using os STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Then run python manage.py collectstatic command. This command will copy the django-ckeditor static and media resources into the directory given by the STATIC_ROOT.
After running this command you will get this message in the terminal and also a folder named static/ckeditor
1383 static files copied to ‘your path’.
Also, add media file settings in the settings.py file.
# settings.py
MEDIA_URL = '/media/' MEDIA_ROOT = BASE_DIR / 'media'
Then set some ckeditor settings in your settings file
# settings.py
# CKEditor Settings
CKEDITOR_UPLOAD_PATH = 'uploads/'
CKEDITOR_IMAGE_BACKEND = "pillow"
CKEDITOR_JQUERY_URL = '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js' CKEDITOR_CONFIGS = {
'default':
{
'toolbar': 'full',
'width': 'auto',
'extraPlugins': ','.join([
'codesnippet',
]),
},
}
Main urls.py
Go to main_project/urls.py and add the following URL.
#urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settingsurlpatterns = [
.....
path('admin/', admin.site.urls),
path('ckeditor/', include('ckeditor_uploader.urls')),
]urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)if settings.DEBUG:
urlpatterns+=static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Models.py
We are using RichTextUploadingField for file support.
# models.py
from django.db import models
from django.utils.translation import gettext_lazy as _
from ckeditor_uploader.fields import RichTextUploadingFieldclass BlogPost(models.Model):
title = models.CharField(
_("Blog Title"), max_length=250,
null=False, blank=False
)
body = RichTextUploadingField() def __str__(self):
return self.title
Then run migrations.
Register your models in admin.py
# admin.py
from django.contrib import admin from .models import BlogPost admin.site.register(BlogPost)
Then open the admin panel. You will see Ckeditor.
Similar posts
Connecting to OCI Linux Instance Using SSH
Connecting to a OCI Linux Instance Using OpenSSH
0 comments
There are no comments.
