skip to navigation
skip to content

Not Logged In

django-ckeditor-updated 4.2.4

Django admin CKEditor integration.

Latest Version: 4.2.8

Django CKEditor
**File storage, Django 1.6 compatible fork available on pypi as django-ckeditor-updated**
**Django admin CKEditor integration.**
Note that this fork has different configuration as the source django-ckeditor.

Provides a ``RichTextField`` and ``CKEditorWidget`` utilizing CKEditor with image upload and browsing support included.

* This version also includes:
#. support to django-storages (works with S3)
#. updated ckeditor to version 4.2.1
#. included all ckeditor language files to made everyone happy!

.. contents:: Contents
    :depth: 5


#. Install or add django-ckeditor-updated to your python path. Note: You may not have the original django-ckeditor and django-ckeditor-updated installed at the same time.

#. Add ``ckeditor`` to your ``INSTALLED_APPS`` setting.

#. Run the ``collectstatic`` management command: ``$ / collectstatic``. This'll copy static CKEditor require media resources into the directory given by the ``STATIC_ROOT`` setting. See `Django's documentation on managing static files <>`_ for more info.

#. Add a CKEDITOR_UPLOAD_PATH setting to the project's ```` file. This setting specifies an relative path to your CKEditor media upload directory. CKEditor uses Django storage API. By default Django uses file system storage backend (it will use your MEDIA_ROOT and MEDIA_URL) and if you don't use different backend you have to have write permissions for the CKEDITOR_UPLOAD_PATH path within MEDIA_ROOT, i.e.::

    CKEDITOR_UPLOAD_PATH = "uploads/"

   For the default file system storage images will be uploaded to "uploads" folder in your MEDIA_ROOT and urls will be created against MEDIA_URL (/media/uploads/image.jpg).

   CKEditor has been tested with django FileSystemStorage and S3BotoStorage.
   There are issues using S3Storage from django-storages.

#. Run the ``collectstatic`` management command: ``$ / collectstatic``. This'll copy static CKEditor require media resources into the directory given by the ``STATIC_ROOT`` setting. See `Django's documentation on managing static files <>`_ for more info.

#. Add CKEditor URL include to your project's ```` file::

    (r'^ckeditor/', include('ckeditor.urls')),

#. Set ``CKEDITOR_IMAGE_BACKEND`` to one of supported backends to enable thumbnails in ckeditor gallery. By default no thumbnails are created and full size images are used as preview. Supported backends:

   - ``pillow``: uses PIL or Pillow

#. All uploaded files are slugified by defaults, to disable this feature set ``CKEDITOR_SLUGIFY_FILENAME`` to ``False``

#. Set the CKEDITOR_RESTRICT_BY_USER setting to ``True`` in the project's ```` file (default ``False``). This restricts access to uploaded images to the uploading user (e.g. each user only sees and uploads their own images). Superusers can still see all images. **NOTE**: This restriction is only enforced within the CKEditor media browser.

#. Add a CKEDITOR_CONFIGS setting to the project's ```` file. This specifies sets of CKEditor settings that are passed to CKEditor (see CKEditor's `Setting Configurations <>`_), i.e.::

           'awesome_ckeditor': {
               'toolbar': 'Basic',

   The name of the settings can be referenced when instantiating a RichTextField::

       content = RichTextField(config_name='awesome_ckeditor')

   The name of the settings can be referenced when instantiating a CKEditorWidget::

       widget = CKEditorWidget(config_name='awesome_ckeditor')

   By specifying a set named ``default`` you'll be applying its settings to all RichTextField and CKEditorWidget objects for which ``config_name`` has not been explicitly defined ::

           'default': {
               'toolbar': 'Full',
               'height': 300,
               'width': 300,


The quickest way to add rich text editing capabilities to your models is to use the included ``RichTextField`` model field type. A CKEditor widget is rendered as the form field but in all other regards the field behaves as the standard Django ``TextField``. For example::

    from django.db import models
    from ckeditor.fields import RichTextField

    class Post(models.Model):
        content = RichTextField()

Alernatively you can use the included ``CKEditorWidget`` as the widget for a formfield. For example::

    from django import forms
    from django.contrib import admin
    from ckeditor.widgets import CKEditorWidget

    from post.models import Post

    class PostAdminForm(forms.ModelForm):
        content = forms.CharField(widget=CKEditorWidget())
        class Meta:
            model = Post

    class PostAdmin(admin.ModelAdmin):
        form = PostAdminForm, PostAdmin)

Managment Commands
Included is a management command to create thumbnails for images already contained in ``CKEDITOR_UPLOAD_PATH``. This is useful to create thumbnails when starting to use django-ckeditor with existing images. Issue the command as follows::

    $ ./ generateckeditorthumbnails

**NOTE**: If you're using custom views remember to include ckeditor.js in your form's media either through ``{{ }}`` or through a ``<script>`` tag. Admin will do this for you automatically. See `Django's Form Media docs <>`_ for more info.

Using S3

If you want to use allowedContent
To allowedContent works, disable **stylesheetparser** plugin.
So included this on your

    "default": {
        "removePlugins": "stylesheetparser",

Demo / Test application
If you clone the repository you will be able to run the ``ckeditor_demo`` application.

#. ``pip install -r ckeditor_demo_requirements.txt``

#. Run `` syncdb``

#. Create a superuser if you want to test the widget in the admin panel

#. Start the development server.

There is a forms.Form on main page (/) and a model in admin that uses the widget for a model field.
Database is set to sqlite3 and STATIC/MEDIA_ROOT to folders in temporary directory.

Running selenium test

You can run the test with ``python test ckeditor_demo`` (for repo checkout only) or with ``tox`` which is configured to run with Python 2.7 and 3.3.
(You may have to fix some imports in selenium webdriver for Python 3.3).

This fork
#. `riklaunim <>`_

Created By
#. `shaunsephton <>`_

#. `3point2 <>`_
#. `buchuki <>`_
#. `chr15m <>`_
#. `hedleyroos <>`_
#. `jeffh <>`_
#. `lihan <>`_
#. `loop0 <>`_
#. `mwcz <>`_
#. `tomwys <>`_
#. `snbuback <>`_
#. And others `<**/django-ckeditor/graphs/contributors>`_

#. Added new demo application with selenium integration test
#. tox setup for Python 3.3 and 2.7 testing
#. Extracted image processing to backends. PIL/Pillow is optional now. Other backends can be added.
#. Fixed a bug with thumbnail generation

#. Python 3.3 compatibility
#. All uploaded files are slugified by default (New settings CKEDITOR_SLUGIFY_FILENAME)
#. Upload file when editing a link (<a href>) now works properly

#. Python 3.3 compatibility in

#. Include CKEditor version 4.2.1.
#. Support Django 1.6

#. Include CKEditor version 4.0.2.
#. 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 <>`_
#. 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.


#. Removed buggy url include check.

#. Egg package corrected to exclude testing and

#. 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 <>`_ .

#. Include resources, sorry about that.

#. More robust PIL import. Thanks `buchuki <>`_ .
#. Better CKEDITOR_MEDIA_PREFIX setting error.

#. Included README.rst in manifest.

#. Added CKEDITOR_UPLOAD_PREFIX setting. Thanks `chr15m <>`_ for the input.
File Type Py Version Uploaded on Size
django-ckeditor-updated-4.2.4.tar.gz (md5) Source 2013-12-07 1MB
  • Downloads (All Versions):
  • 128 downloads in the last day
  • 713 downloads in the last week
  • 2598 downloads in the last month