NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4913 most downloaded on PyPI
Django admin CKEditor integration.
Last release 1 years ago
06 Jun 2025
Release timing varies
gaps range from 8 days to 10 months
Most releases are documented
notes for 49 of 57 stable releases
Nothing withdrawn
no release was ever pulled
16 years old
57 releases · first in 2010
Nothing published for this version
*again* (if something slips through by accident) and which disables the behavior where CKEditor 4 would automatically attach itself to unrelated HTML
Deprecated the package.
Added a new ckeditor/fixups.js script which disables the version check again (if something slips through by accident) and which disables the behavior where CKEditor 4 would automatically attach itself to unrelated HTML elements with a contenteditable attribute (see CKEDITOR.disableAutoInline in the CKEditor 4 docs).
frontend. Added a system check of our own which tells people to look for alternatives.
One column per quarter.
Silenced the CKEditor version check and associated nag message in the frontend. Added a system check of our own which tells people to look for alternatives.
#. CKEditor 4.22.1 #. Dark mode fixes. #. Added support for Pillow 10.
CKEditor 4.22.1
Dark mode fixes.
Added support for Pillow 10.
Nothing published for this version
#. Required a newer version of django-js-asset which actually works with Django 4.1. #. CKEditor 4.21.0 #. Fixed the CKEditor styles when used with th
Required a newer version of django-js-asset which actually works with Django 4.1.
CKEditor 4.21.0
Fixed the CKEditor styles when used with the dark Django admin theme.
Nothing published for this version
#. Avoided calling static() if CKEDITOR_BASEPATH is defined. #. Fixed ./manage.py generateckeditorthumbnails to work again after the image uploader ba
Avoided calling static() if CKEDITOR_BASEPATH is defined.
Fixed ./manage.py generateckeditorthumbnails to work again after the image uploader backend rework.
CKEditor 4.19.1
Stopped calling static() during application startup.
Added Django 4.1
Nothing published for this version
Nothing published for this version
few template variables which are not used in the bundled ckeditor/widget.html template. This only affects you if you are using a customized widget or
Changed the context for the widget to deviate less from Django. Removed a few template variables which are not used in the bundled ckeditor/widget.html template. This only affects you if you are using a customized widget or widget template.
Dropped support for Python < 3.8, Django < 3.2.
Added a pre-commit configuration.
Removed the Travis CI configuration; Travis CI hasn't run our unit tests for months now.
Added a GitHub action for running tests.
Made selenium tests require opt in using a SELENIUM=firefox or SELENIUM=chromium environment variable.
Nothing published for this version
Nothing published for this version
identifiers are still supported for now).
CKEditor 4.18.0
Made it possible to override the CKEditor template in the widget class.
Changed CKEDITOR_IMAGE_BACKEND to require dotted module paths (the old identifiers are still supported for now).
#. CKEditor 4.17.1
CKEditor 4.17.1
#. CKEditor 4.16.1
CKEditor 4.16.1
signals instead of detecting clicks on inline buttons. This should fix compatibility with various Django admin skins.
Replace ugettext_lazy() with gettext_lazy()
CKEditor 4.14.1
Changed our JS script to listen for Django's formset:added signals instead of detecting clicks on inline buttons. This should fix compatibility with various Django admin skins.
Dropped compatibility guarantees for Django<2.2 and Python<3.6.
Reformatted the code using black, isort.
Added testing using Django 3.1.
#. Django 3.0 support #. Python 3.8 support #. Replace staticfiles templatetags library usage with static #. Add a templates validation step to the te
Django 3.0 support
Python 3.8 support
Replace staticfiles templatetags library usage with static
Add a templates validation step to the tests
Internationalize ckeditor_upload browse.html template.
Add ckeditor_upload features and custom configuration example to ckeditor_demo
CKEditor 4.13.1
#. CKEditor 4.13
CKEditor 4.13
#. CKEditor 4.11.4 #. Fix JS handling again #. Allow using settings to configure extra_plugins and external_plugin_resources
CKEditor 4.11.4
Fix JS handling again
Allow using settings to configure extra_plugins and external_plugin_resources
#. Fix Django 1.8 - 1.10 regression #. Drop leftover support for Django older than 1.8 #. Django 2.2 support #. Documentation updates #. Minor fixes t
Fix Django 1.8 - 1.10 regression
Drop leftover support for Django older than 1.8
Django 2.2 support
Documentation updates
Minor fixes to JS handling
#. Fix bad pypi package
Fix bad pypi package
#. Django 2.1 compatibility, minimal supported Django version is 1.11 LTS #. Option to set custom django file backend for CKEditor uploader app.
Django 2.1 compatibility, minimal supported Django version is 1.11 LTS
Option to set custom django file backend for CKEditor uploader app.
#. CKEditor 4.9.2 #. Documentation improvements #. Allow non-string properties of user for CKEDITOR_RESTRICT_BY_USER
CKEditor 4.9.2
Documentation improvements
Allow non-string properties of user for CKEDITOR_RESTRICT_BY_USER
#. Django 2.0 compatibility
Django 2.0 compatibility
#. Actually include the code which sets CKEDITOR_BASEPATH. #. CKEditor 4.7.3
Actually include the code which sets CKEDITOR_BASEPATH.
CKEditor 4.7.3
folders containing the current date.
CKEditor 4.7
Fix storage problems by setting CKEDITOR_BASEPATH (hopefully for real this time)
Documentation updates
Added a CKEDITOR_RESTRICT_BY_DATE setting to add uploaded files into folders containing the current date.
Added a CKEDITOR_FILEICONS setting that allows overriding the icons used by Gallerific.
Added a CKEDITOR_FILENAME_GENERATOR setting which allows specifying a callable which mangles the filename of uploaded files.
Added THUMBNAIL_SIZE and IMAGE_QUALITY settings for the Pillow image backend.
Actually include static assets for ckeditor_uploader in the pip-installable package.
Removed CKEDITOR_JQUERY_URL and the jQuery dependency. The CKEditor activation now uses plain JavaScript. Dependencies are JSON.parse and document.querySelectorAll which are supported in practically all used browsers these days.
Fixed a bug where the CKEditor language was not set individually for each request.
#. Django 1.11 support #. Drop South migrations #. Fix storage problems by setting CKEDITOR_BASEPATH
Django 1.11 support
Drop South migrations
Fix storage problems by setting CKEDITOR_BASEPATH
#. Fix CKEditor package static path
Fix CKEditor package static path
#. Django 1.10 updates #. Development dependencies bump #. CKEditor 4.6.1 #. Paste image support #. Fix for ManifestStaticFilesStorage
Django 1.10 updates
Development dependencies bump
CKEditor 4.6.1
Paste image support
Fix for ManifestStaticFilesStorage
#. Re-add missing additional CkEditor plugins
Re-add missing additional CkEditor plugins
#. Updated CkEditor to 4.5.10 #. Django 1.10 compatibility changes #. Documentation updates
Updated CkEditor to 4.5.10
Django 1.10 compatibility changes
Documentation updates
#. Fix file/directory browsing and searching #. Editor width style fixes #. Added CKEDITOR_BROWSE_SHOW_DIRS #. Added CKEDITOR_ALLOW_NONIMAGE_FILES #.
Fix file/directory browsing and searching
Editor width style fixes
Added CKEDITOR_BROWSE_SHOW_DIRS
Added CKEDITOR_ALLOW_NONIMAGE_FILES
Python 2.6 compatibility fix
#. Added template missing in the package
Added template missing in the package
#. Update Readme with backward-incompatible changes
Update Readme with backward-incompatible changes
File upload support have been moved to ckeditor_uploader. The urls are in ckeditor_uploader.urls while for file uploading widget you have to use RichT
Moved file upload code to new Django application - ckeditor_uploader. RichTextField doesn't use file upload which have been moved to RichTextUploadingField.
File upload support have been moved to ckeditor_uploader. The urls are in ckeditor_uploader.urls while for file uploading widget you have to use RichTextUploadingField from ckeditor_uploader.fields instead of RichTextField from from ckeditor.fields.
Updated ckeditor to 4.5.3 (from https://github.com/ckeditor/ckeditor-dev/tree/4.5.3)
Added new plugins from ckeditor maintainers: adobeair, ajax, autoembed, autogrow, autolink, bbcode, codesnippet, codesnippetgeshi, devtools, divarea, docprops, embed, embedbase, embedsemantic, filetools, iframedialog, image2, language, lineutils, mathjax, menubutton, notification, notificationaggregator, placeholder, sharedspace, sourcedialog, stylesheetparser, tableresize, uicolor, uploadimage, uploadwidget, widget, xml
Add zip_safe=False on setup config, to force does not create ".egg" file
Add python Wheel package configuration
Add setup.py functions to easy release ".egg" package and Wheel package, and tag version on git ( python setup.py publish and python setup.py tag )
Improved Tox configuration to code coverage check, code quality check (flake8), imports order check (isort) and test with django master branch
Add code quality configurations
Add EditorConfig configuration file
Refactored code to be in compliance with PEP8
Nothing published for this version
#. Fixed unbound variable in non-image file upload
Fixed unbound variable in non-image file upload
#. Updated ckeditor to 4.5.1 #. Reverted django.contrib.staticfiles.templatetags.staticfiles.static usage causing problems with some storages #. Allow
Updated ckeditor to 4.5.1
Reverted django.contrib.staticfiles.templatetags.staticfiles.static usage causing problems with some storages
Allow non-image files to be upload (the upload widget expects images so the user experience isn't best at the moment)
Few refactors and fixes to selenium tests
#. Python 3 compatibility fixes #. Get static files paths in a proper way #. Fix Django 1.7 deprecation warning #. More examples in readme
Python 3 compatibility fixes
Get static files paths in a proper way
Fix Django 1.7 deprecation warning
More examples in readme
#. Allow only POST requests on upload view. #. Exclude hidden files from image browser #. Prevent caching of image browser view #. Use lazy JSON encod
Allow only POST requests on upload view.
Exclude hidden files from image browser
Prevent caching of image browser view
Use lazy JSON encoder to support i18n in CKEditor settings.
Misc documentation updates
Check for jQuery presence correctly
Update to CKEditor 4.4.6
#. Make upload/browse views be staff_member_required by default (can be overridden) #. Fix ckeditor initialisation code breaking with other jQuery ver
Make upload/browse views be staff_member_required by default (can be overridden)
Fix ckeditor initialisation code breaking with other jQuery versions.
Support grappelli inline form widgets.
Remove odd left margin from widget template.
Allow running selenium tests with chromium.
#. Post merge package name fix in Readme
Post merge package name fix in Readme
CKEDITOR_JQUERY_URL = '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'
Update CKEditor to 4.4.4 full package - for all plugins and static files you may need
Fixes for inline editor
Editor initialisation uses jQuery. You need to specify CKEDITOR_JQUERY_URL for it to work. You can use:
CKEDITOR_JQUERY_URL = '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'
#. Update CKEditor to 4.3.3
Update CKEditor to 4.3.3
#. Include CKEditor version 4.0.2.
Include CKEditor version 4.0.2.
#. Remove unwanted static files from distribution. #. Use Pillow instead of PIL since it builds on all systems.
Remove unwanted static files from distribution.
Use Pillow instead of PIL since it builds on all systems.
#. Include CKEditor version 3.6.2. #. Initial work on Django aligned theme. #. Fix schema slash removal issue on media url generation. Thanks mwcz __
Include CKEditor version 3.6.2.
Initial work on Django aligned theme.
Fix schema slash removal issue on media url generation. Thanks mwcz
Added compatibility for South. Thanks 3point2
Prevented settings from leaking between widget instances. Thanks 3point2
Fixed config_name conflict when verbose_name is used as first positional argument for a field. Thanks 3point2
Refactored views to allow use of file walking with local paths. Thanks 3point2
Added command to generate thumbnails. Thanks 3point2
Migrated from using media to static file management.
#. Added ability to configure CKeditor through a CKEDITOR_CONFIGS settings. Thanks jeffh __ for the input.
Added ability to configure CKeditor through a CKEDITOR_CONFIGS settings. Thanks jeffh for the input.
#. Removed buggy url include check.
Removed buggy url include check.
#. Egg package corrected to exclude testing admin.py and models.py.
Egg package corrected to exclude testing admin.py and models.py.
#. Enforce correct configuration. #. Changed upload behavior to separate files into directories by upload date. Thanks loop0 __ . #. Added ability to
Enforce correct configuration.
Changed upload behavior to separate files into directories by upload date. Thanks loop0 .
Added ability to limit user access to uploaded content (see the CKEDITOR_RESTRICT_BY_USER setting). Thanks chr15m for the input.
Added initial set of much needed tests.
General cleanup, light refactor.
#. csrf_exempt backwards compatability. Thanks chr15m __ .
csrf_exempt backwards compatability. Thanks chr15m .
#. Include resources, sorry about that.
Include resources, sorry about that.
#. More robust PIL import. Thanks buchuki __ . #. Better CKEDITOR_MEDIA_PREFIX setting error.
More robust PIL import. Thanks buchuki .
Better CKEDITOR_MEDIA_PREFIX setting error.
#. Included README.rst in manifest.
Included README.rst in manifest.
#. Added CKEDITOR_UPLOAD_PREFIX setting. Thanks chr15m __ for the input.
Added CKEDITOR_UPLOAD_PREFIX setting. Thanks chr15m for the input.
Your coding agent can read these notes before it upgrades. Set up the MCP server →