django CMS Text CKEditor

raw JSON →
5.1.7 verified Fri May 01 auth: no python deprecated

A text plugin for django CMS that provides a CKEditor-based rich text editor. Version 5.1.7 is the current release and previous release (the repository has been archived). Requires Python >=3.7 and Django CMS 3.7+ (including 4.x and 5.x).

pip install djangocms-text-ckeditor
error Could not find module 'djangocms_text_ckeditor.plugins'
cause Import path for the plugin changed from 'plugins' to 'cms_plugins' in version 4.x.
fix
Use 'from djangocms_text_ckeditor.cms_plugins import TextPlugin'
error 'str' object has no attribute 'body'
cause The HTMLField triggers a recursion when saving a model with a __str__ method that returns the field itself.
fix
Change model's __str__ to return a different field, e.g., 'def __str__(self): return self.title'
error CKEditor widget not showing, just a plain textarea
cause django CMS toolbar is not loaded because the placeholder is rendered without CMS context (e.g., in list views).
fix
Ensure the page is rendered with '{% render_placeholder %}' in a CMS page template or use a CMS frontend editor.
breaking Repository is archived. No further updates or security fixes will be released. Migrate to a maintained alternative (e.g., djangocms-text, django-ckeditor).
fix Consider switching to djangocms-text or django-ckeditor for continued support.
deprecated CKEditor 4 is used; it reached end-of-life in 2023. No updates for security vulnerabilities will be provided.
fix Migrate to CKEditor 5 (e.g., use django-ckeditor-5).
gotcha Inline editing may break on touch devices. Use django CMS 5+ for the fix, or disable inline editing via CMS_TOOLBAR_SIMPLE = True.
fix Upgrade to 5.1.1+ or use CMS_TOOLBAR_SIMPLE = True in settings.
gotcha The HTMLField field uses the model's __str__ method when saving; ensure your model's __str__ returns a string or use the 'sanitize' parameter.
fix Override __str__ on models that use HTMLField or set sanitize=False.

Add 'djangocms_text_ckeditor' to INSTALLED_APPS, configure CKEDITOR_SETTINGS, and use the placeholder in templates.

INSTALLED_APPS = [
    ...
    'djangocms_text_ckeditor',
]

CKEDITOR_SETTINGS = {
    'language': '{{ language }}',
    'toolbar': 'CMS',
    'skin': 'moono-lisa',
}

# In a template:
{% load cms_tags %}
{% placeholder "content" %}