Last update on .

Summary: Herein the author finds that Django-cms is a pretty decent content management system.

I’ve finally gone live with the site for my new initiative: As part of my effort to research the Django ecosystem, I decided to give a pre-packed CMS a try. There were two contenders: django-cms and Ella. Though Ella looked good, it appeared to be less mature than django-cms. So my efforts stayed focused on deploying django-cms and I never needed to fall back to Ella. It looks like Django-cms is going to meet my needs.

Which version?

There are two branches in the django-cms repository: trunk and cms2. It looks like cms2 is getting regularly merged in the trunk as features mature. At the time of my deployment there was a note in the wiki stating that django-cms is not compatible with the latest Django releases (which I needed for a different project), so I used the older r41 version that is downloadable from a link on the top-right corner of the home page.

It should be understood that r41 is fairly old—it is the original release from September of 2008. A lot of development has occurred since then which can be viewed on their demo site. I plan to install the newer version as soon as Django compatibility has been restored.


The installation instructions were sufficient to get django-cms up and running. Now that django-cms is successfully deployed, I want to document a couple of gotchas.


Two prerequisites are listed: django-tinymce and django-filebrowser. Both prerequisites are optional, and in fact I only have them partially working as of now. They add some niceness, especially when building a site for a non-technical client, but they are not essential for the CMS to function.

django-tinymce depends on the TinyMCE javascript widget that is available as part of most Linux distributions. I didn’t like the layout of the Debian package however, so I downloaded version from the project site. I then downloaded django-tinymce 1.5 and followed the instructions. I must not have put everything in the right places, however, because the WYSIWYG editor isn’t appearing for me. I’ll look into it more later.

I got django-filebrowser from SVN. Following the instructions resulted in what looks like a working link on the admin web site, but I haven’t tested the functionality much yet.


I symlinked and into my project directory so that I could just override the variables I cared about in I turned off LANGUAGE_REDIRECT and USE_I18N for my site. It is also important to make sure to have the DEFAULT_TEMPLATE set correctly. It appears to be relative from my project templates directory.

Base Template

The only step left was to copy cms/templates/base.html into my project’s templates folder and customize it. Now I have a functioning site.


There are two areas where I find django-cms’s interface to be rather confusing.

  • I don’t understand their distinction between a page and the content on the page. Each page can have multiple “contents”, but only the most recent one shows up on the live site. I am probably exposing my ignorance about content management systems in general.
  • I don’t see an easy way of making django-cms display a list of all child pages on a specific page. Third-tier pages do not show up on the site navigation, so the only way I see to link to them is by manually maintaining a menu.


Django-cms appears to have a decent user community and active development. Deployment wasn’t as easy as a PHP CMS, but it was easy by Django community standards. Though django-cms has seen a lot of activity recently, the older version I deployed is very functional and has had few quirks once I got it set up correctly. On the whole, I like it.


Pingbacks are closed.


Comments are closed.