Run the collectstatic management command: $ ./manage.py collectstatic. This will copy static CKEditor required media resources into the directory given by the STATIC_ROOT setting. See Django's documentation on managing static files for more info.

CKEditor needs to know where its assets are located because it loads them
lazily only when needed. The location is determined in the ckeditor-init.js
script. and defaults to static/ckeditor/ckeditor/. This does not work all
the time, for example when using ManifestStaticFilesStorage, any asset
packaging pipeline or whatnot. django-ckeditor is quite good at automatically
detecting the correct place even then, but sometimes you have to hardcode
CKEDITOR_BASEPATH somewhere. This can be hardcoded in settings, i.e.:

CKEDITOR_BASEPATH = "/my_static/ckeditor/ckeditor"

It is possible to override
the admin/change_form.html template with your own if you really need to do
this, i.e.:

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

CKEDITOR_UPLOAD_PATH = "uploads/"

When using 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).

If you want be able for have control for filename generation, you have to add into settings yours custom filename generator:

# utils.py
def get_filename(filename):
return filename.upper()

# settings.py
CKEDITOR_FILENAME_GENERATOR = 'utils.get_filename'

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

For the default filesystem storage configuration, MEDIA_ROOT and MEDIA_URL must be set correctly for the media files to work (like those uploaded by the ckeditor widget).

Add CKEditor URL include to your project's urls.py file:

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

Note that by adding those URLs you add views that can upload and browse through uploaded images. Since django-ckeditor 4.4.6, those views are decorated using @staff_member_required. If you want a different permission decorator (login_required, user_passes_test etc.) then add views defined in ckeditor.urls manually to your urls.py.

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

All uploaded files are slugified by default. To disable this feature, set CKEDITOR_UPLOAD_SLUGIFY_FILENAME to False.

Set the CKEDITOR_RESTRICT_BY_USER setting to True in the project's settings.py file (default False). This restricts access to uploaded images to the uploading user (e.g. each user only sees and uploads their own images). Upload paths are prefixed by the string returned by get_username. If CKEDITOR_RESTRICT_BY_USER is set to a string, the named property is used instead. Superusers can still see all images. NOTE: This restriction is only enforced within the CKEditor media browser.

Set the CKEDITOR_BROWSE_SHOW_DIRS setting to True to show directories on the "Browse Server" page. This enables image grouping by directory they are stored in, sorted by date.

Set the CKEDITOR_RESTRICT_BY_DATE setting to True to bucked uploaded files by year/month/day.

You can set a custom file storage for CKEditor uploader by defining it under CKEDITOR_STORAGE_BACKEND variable in settings.

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:

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

$ ./manage.py generateckeditorthumbnails

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