Django CMS is an enterprise-grade content management system that’s been around since 2007.
The platform was recently voted in as the Best Open Source CMS of 2015; which is some achievement considering the sheer quantity of competitors.
Built upon Django, a Python web framework, Django CMS is open source and free to download. However, they offer onboarding, setup and custom development services to support larger projects.
In fact, Django CMS and the team behind it is trusted by the likes of NASA, L’Oreal and Cardiff University.
According to the Django CMS website, Django CMS is, “a CMS built for developers and content editors”. The platform recently upgraded to version 3.2, gaining an improved UI and better touch screen support.
Enough talk, though. Let’s dive in.
First impressions start on the vendor website, and Django CMS’s website is perfectly professional.
The homepage welcomes you with a simple introduction made up of text, images and a video.
There’s also a timeline of Django’s history on the homepage, which I thought was a nice touch.
My only gripe with the actual website is the font used. It’s a little thin and difficult to read. No big deal in the grand scheme of things, but perhaps it’s worth adjusting.
To get yourself set up with Django CMS, you can make use of their fifteen minute demo, or head over to Aldryn Cloud by Divio, the company behind Django CMS.
There, you can set up a test instance of Django CMS in the cloud for free, in just a few minutes. Not a bad deal at all.
And of course, you can also download the entire platform from their homepage before uploading it anywhere you like.
Once your Django CMS instance is ready to go, you’ll be greeted with an example website, populated with everything needed for a site launch.
The default theme and example content show how Django CMS can be used to produce a rather beautiful, yet highly professional website. Which is expected.
There’s a tutorial section on the right-hand side, too, which first of all points out the responsive nature of Django CMS's default theme. It encourages you to adjust the width of your browser to put the theme to the test, and it does indeed respond very well – never losing its aesthetic composure.
My only issue is that the tutorial section seems to be there only for Demo users, and not for users who opt for a free Aldryn cloud hosting account. I found myself having to switch back and forth between the two to make use of the tutorial.
I guess now is a good time to mention that Django CMS doesn't have a “traditional” back end. There is no dedicated dashboard or admin panel.
Everything is controlled via the CMS toolbar across the top of the page, which only logged in admins can access. That toolbar, combined with point-and-click front-end editing, makes up the bulk of Django CMS.
Speaking of editing…
Once you get your bearings, you’ll want to start tinkering with the website's content. And I must say, editing content with Django CMS is absolutely brilliant.
Clicking the blue “Edit” button on the CMS toolbar enables inline editing, allowing you to point, click and then edit any section of any page.
As you move your cursor around the page, Django CMS indicates that double clicking at that instant will either allow you to edit; text, images or styles.
This feature really helped things flow. There are no clunky boxes to highlight which element you’re hovering over, and thus no visible indication that you’re in edit mode other than the toolbar at the top and the cursor message.
It’s all very, very fluid.
Although, I did notice that fluidity fade a little in some parts of the platform.
For example, when I swapped one image for another, I had to double-click on the existing image to open the WYSIWYG editor. But the editor didn't give me a preview of the image like it did for the text.
To replace that image, I had to click on “CMS Plugins” and then “Image”. I guess the tried and tested Image icon wasn't cutting it.
And then, I was presented with another window, where I could select my new image from Django CMS' media library (which wasn't much to look at, either). That's three open windows, just to change an image.
It wouldn't be so bad if the image editing window opened in a controlled or aesthetic way. But instead, it was small and cramped with an over-sized header, forcing me to scroll or resize the window manually to figure out my next move. Where did all that fluidity go?
Thankfully, Django CMS' fluidity returns when you play around with the structure of pages.
Django CMS makes it supremely easy to edit page structure by allowing you to click the “Structure” button on the CMS toolbar, which opens up a tree of options.
The home page for example, is made up of the content blocks, as seen above. Each one can be dragged-and-dropped into place, edited, copied, and more. You can even assign a plugin to page blocks in order to add some extra functionality.
It's essentially another way to view your site, in perhaps a more traditional sense. The listed view keeps things simplified, and many users may prefer editing their this way.
The rest of Django CMS' toolbar is made up of a few more buttons, each one capable of unleashing quite a bit of functionality. Aside from a language switcher (which can switch from English to German) and a “Live Reload is On/Off” button (which automatically refreshes the page), there's a few other buttons worth mentioning.
Clicking on the site name, which in my case is, “example.com”, brings about a drop-down menu containing; Pages, Administration, User Settings and a Logout button. You can also disable the toolbar from that same menu, although I'm not sure why anybody would want to.
On that menu, clicking on “Pages” extends a window from the left which displays another tree, this time of the order of my website's pages.
You can drag-and-drop those pages however you like, and the results will be reflected in the website's navigational menu upon refresh. You can also search for pages, check to see what language they're displaying with, add a child page, duplicate and delete.
Plus, pressing the little cog icon for each page brings up advanced settings, where you can alter page titles, slugs, META descriptions, redirects, and so forth.
These options can also be found more easily on the CMS toolbar, under the “Page” button. Depending on what page I'm viewing at the time, it allows me to delete, copy or create a sub page. You can also unpublish the page, and enter into advanced settings.
As for the “History” button on the CMS toolbar, the good old “Undo” button can be found, along with a “revert to live” option, which will erase all unpublished changes.
You can also opt to “View History”, which will bring up a list of all the changes made, by whom, and at what time. Quite handy.
It's worth noting that all of these windows and menus popped up and slid into view quite elegantly. Which is totally unlike my previous experience when switching an image around with the WYSIWYG editor.
Here's where Django CMS really flexes its muscles.
To add new content to your Django CMS website, you'll need to click the “Create” button on the CMS toolbar. This launches the Content Wizard.
Here, you can add to your Django CMS website in a number of ways:
All you have to do is select the page or page element you want, and then click “Next”. You'll then be able to dive right into configuring the details. For an FAQ question, for example, you can set the title, category, short description and answer.
Clicking “Create” then sends your new FAQ question to the FAQ page, under the category you specified. Remember that fluidity? Yeah, it's still here.
Django CMS is multi-lingual by default. It supports English and German out of the box, and also provides internationalization (i18n) support for producing multi-lingual sites.
The platform also has a, “virtually unlimited undo history, allowing editors to revert to a previous version”. Which I think is pretty cool.
Furthermore, Django CMS boasts a plugin marketplace which is well populated with a range of free, functionality boosting addons.
Forms, FAQs, Disqus, Google analytics, Mailchimp, News & Blog, Facebook comments are more, are all there to be downloaded and implemented.
Pleasantly, you can also install those plugins directly onto your Aldryn cloud account if you set one up, so the installation process is taken care of. Developers are also encouraged to code their own plugins, which is something they can find guidelines on via Django CMS' documentation.
The only way to access the media library, as far as I can see, is by attempting to alter or add an image. Which I thought was weird.
As previously mentioned, this is where multiple windows are opened, some of which are not as pretty as the rest of Django CMS. The media library itself looks okay, comes with a search function, and can be navigated relatively easily.
But I must mention again that it opens in its own separate window, and not in the same way as other Django CMS sections open up, either. Scrolling is needed once again, it's off center. It's all a little bit jarring, and I think it needs some attention.
Django CMS' support offering is a bit of a mixed bag.
An official Google+ community is where the core stuff is hosted, including links to the official documentation and the official blog. The documentation is detailed and easy to navigate, but there really isn't much else other than that.
A rather simplifiet tutorial window during the Django CMS demo, there's no help to be found within the platform itself, either. A live chat feature can be found on Django CMS' website, but I'm pretty sure that's more for assisting visitors rather than actual platform support.
There's a strong community around Django CMS, and indeed around Django as a web framework, but still, I feel like there should be more on offer. Perhaps some video tutorials or a searchable database of some kind.
I’ve always felt that platforms aiming at the enterprise and developer market have been unnecessarily clunky. Django CMS, though, doesn’t follow suit.
As we move forward, I think we'll continue to see a trend around content management systems moving away from traditional dashboards, opting for more self-explanatory app-like experiences instead.
I suspect that the use of CMS toolbars, like the one Django CMS makes use of, will increase across the board. They'll allow for pages and their content to be edited right there on the page, and bring about more drag-and-drop interfaces to keep things moving quickly. In other words, I think Django CMS is ahead of the curve with their fluid front-end features. Other platforms would do well to try and match them.
With this approach, Django CMS caters to content editors and marketers just as much as it does to developers. Sure, it's open source and totally malleable in the hands of a developer, but it's also approachable for the marketing guy who just wants to tinker with slideshow images. And that's not an easy balance to strike.
As a result of that balance, using Django CMS is a genuine pleasure. Edits are super quick to make, you have increased flexibility when it comes to modifying content and page structure, and yet none of it is overwhelming.
In short, I am truly impressed by the slick user experience.
There is room for improvement, though. As I mentioned earlier in the review, I'm not a fan of the way extra windows are opened up when making more detailed edits. Nor am I a fan of the design of those windows. I also think areas like administration and the media library need some beautifying. Things aren't quite as smooth under the surface, and that needs seeing to.
But overall, I think it's clear to see that Django CMS is a very serious player when it comes to web content management. I'm certainly a fan.
There's no doubt about it, Django CMS is an excellent platform for projects large and small. It's simple enough for anybody to approach, although its true potential will need to be unlocked by a developer familiar with Python.
Although I've spoken about its high level of approachability, I wouldn't recommend Django CMS to everybody. There isn't a theme library for you to choose from, nor is it designed to compete with website builders, despite its elegant front-end editing features. Make no mistake, Django CMS is a powerful toolbox designed to help developers build highly functional websites. And with clients like L'Oreal and NASA, we already know that it's capable of that.
Why do I feel the need to point that out? Simply because Django CMS' epic use of its CMS toolbar makes it seem like a plug-and-play website builder/CMS built for the masses. For such a powerful platform, that's some achievement.
It does need touching up in some areas in order to round off the overall user experience, but the foundations that exist today make for a genuinely slick ride.
Front end editing becoming the key focal point is something I expect to happen within most major CMS in months and years to come, and they'd all do well to try and mimic Django CMS' excellent approach.