Organizations’ content creation and publishing are streamlined and powered up with Content Management Systems (CMS). Even though some websites run without a CMS, this does not mean they can’t do better with one. Think globally - you might get tied up with piles of content as your company grows in size. Getting a CMS is a crucial investment in your digital presence; its advantages were extensively described in our previous article.
At Logicify, we have a solid experience with content management systems — deploying, customizing, and even developing custom ones. Since Python is our primary back-end technology, we leaned toward a CMS that belongs to the same ecosystem — django CMS. We’ve been using it for a while now in external projects and, since 2014, for internal needs too.
We’d like to share our experience using django CMS and a few field-proven life hacks. This article will cover the following topics:
- overview of django CMS
- how the CMS works (the basics)
- pros of django CMS (Logicify opinion)
- cons of django CMS (Logicify opinion)
- Logicify life hacks for django CMS
Need help choosing or implementing a CMS? Drop us a line using the form below. We'll be glad to assist!
Meet django CMS
django CMS is a modern CMS based on Django, a high-level Python Web framework. Its community edition is open source, licensed under BSD 3. The CMS was released in 2007, and, since then, it is used by such world-famous companies as L'Oreal, NASA, Mercedes-Benz, Carnegie Corporation of New York.
According to Django philosophy, code, design, and content are three distinctly different disciplines separated from each other.
- Django’s pluggable, application oriented architecture
- variety of plugins and apphooks
- multi-site capability
- clean and simple HTML-based templates
- no coding
- easy complementing with Bootstrap and rich content support
- reusable design
- minimal training required
- scheduled publishing and unpublishing
- granular privileges
- WCAG compliance
- out-of-the-box SEO tools
Primarily, Logicify chose django CMS because it belongs to Python/Django ecosystem, our focus technology. It is flexible and highly customizable - yet another advantage we appreciated. Since we are a software R&D shop, we deployed and set the system up on our own. We built a bilingual marketing website, with Blog and Portfolio sections, as well as Intranet based on django CMS. Our system is backed by PostgreSQL. The CMS resides on some Python cloud hosting platform.
How django CMS Works
This is out of scope of this article to describe all django CMS use cases. We’ll just briefly cover the basics.
Almost any CMS is a mixture of core (default) functionality and customization done on two levels: templating (a mixture of HTML/CSS and programming code) and functionality (deeper customizations, normally done in the native programming language of the system, to add new functionality and adjust it for a specific workflow).
In django CMS, website pages are created out of templates, or set of placeholders, which are filled with content. You could go with a default or a custom template, designed following your corporate style and specific marketing needs. The templates may use inherited design patterns from a single template base, which saves both time and costs. With re-usable placeholders and aliases, you can create a common site-wide design with certain page elements—headers, footers, menus— repeated on each page.
Django’s template system is designed to be extensible. Apart from default plugins, a rich ecosystem of custom applications (you may also find the terms “addon” and “app hook” to refer to the same) and plugins for handling any types of content is available at the official marketplace.
The difference between an application and a plugin is in the fact that the former is a stand-alone app attached to your website and accessible via URL (for instance, Aldryn News and Blog), whereas the latter is an object that is put into a page placeholder (Text, Image, Form, Related Articles).
We use default django CMS functionality, extended with plugins, and custom Logicify theme for our marketing website. Aldryn News & Blog application maintains our Blog and monthly News Digest. For some intranet sections, like Learning Resources and Logicify Talks, and for Portfolio section, we developed our own custom application.
Have questions about django CMS setup and implementation? Submit this contact form, and we'll get back to you.
Advantages of django CMS we’ve noticed so far
On top of all positive business implications a CMS brings for a website, django CMS offers numerous additional advantages. This list is not extensive, we just mentioned the points of particular value to us:
- django CMS (community edition) is open source, hence free.
- The system is very flexible even if your needs are quite sophisticated. As a software R&D shop, we have dev people, quality assurance engineers, and designers in-house to accommodate CMS for any workflow. The design-for-extension principle makes advanced customisations possible, so django CMS balances custom applications and content well.
- It is relatively easy to create a unified look and feel for all pages and components of your website using django CMS.
- Additionally, the CMS has a healthily populated marketplace of plugins and a live active community of contributors. There is detailed documentation on basically any issue a user may experience, so troubleshooting is made easier.
- django CMS is multilingual out of the box. This is important for an outsourcing company that targets clients in English-speaking countries yet hires people on the local labor market.
- django CMS smoothly pairs with Bootstrap, so themes and pages become mobile friendly quite easily.
- The majority of CMS management functions can be performed from the front-end of the website in a What You See is What You Get (WYSIWYG) way, rather than in a separate administrative back-end. Updating, previewing, and publishing the content is easy and transparent. This is especially valuable since different people are in charge of CMS deployment & setup and publishing the content. The latter, as a rule, are non-technically minded or have very limited technical knowledge.
- django CMS is a perfect choice for any web application using other Python/Django family technologies. For instance, we married a Django-based web app, which used Oscar framework for eCommerce purposes, with django CMS. This allowed us to interlink all components of the app and made the whole dev process much smoother.
Disadvantages of django CMS we’ve noticed so far
Okey, we’ll be fair and set against a few disadvantages of django CMS. This is what we at Logicify counted as the system’s stumbling points:
- As we’ve been deploying and configuring django CMS for internal needs, we couldn’t help but noticed some degree of unobviousness in the workflow. Sometimes, actions required from the user to complete this or that step are counter-intuitive, and the system seems to work against the devs, rather than with them. The opinion may be subjective for Logicify team, however, this objectively calls for more detailed documentation on the system and its constant update, especially while knowledge transfer.
- Online there are tons of technical docs for django developers, yet we found limited documentation (at least freely available) for non-technical people, i.e. primary users of CMS. We were forced to create an internal User Guide with tips and tricks from scratch.
What if we publish Logicify internal User Guide for django CMS? Interested? Drop us a line via the contact form or email firstname.lastname@example.org.
- We struggled setting user roles and permissions in the system. There are a few permission levels: global, group, page-specific, and the whole hierarchy seems quite crooked, especially as over time CMS overgrows with customizations and plugins.
These disadvantages, however, pale before great flexibility of django CMS. All in all, deploying a fully customized CMS is way faster than building a custom one from scratch.
Logicify Tips to Use django CMS
We have a few first-hand tips for companies that just start working with django CMS. Call these field-proven life hacks:
- django CMS is as comfy and user-friendly as it was implemented to be.
Though the actual installation of django CMS is not over-complicated, you would either way need a dev team to properly set it up per your needs. The designer is required to create mockups of templates, and markup developer — to make HTML/CSS layouts.
Even if you decide to use default CMS page templates, you would need a designer and markup developer to make them look appealing and aligned with corporate style and design brand book.
Suggested team line-up to install and configure django CMS is as follows:
1 Python Back-end developer, 1 HTML/CSS developer, 1 designer, 1 QA, (optional) 1 Project Manager
You would also need a person to document company-specific use cases and workflow for django CMS and train your editorial team to use it.
- If this is your first time deploying and setting up django CMS by own efforts, be prepared for much investigation. Fortunately, there are tons of development documentation in the web.
Though a vast plugins ecosystem is certainly a plus for django CMS, it is hard to figure out the difference between plugins with totally or slightly similar functionality. This takes time and practice to choose the plugin that a) perfectly fits your needs; b) is installed easily and c) has a compatible version. We established a whole framework for such a comparative analysis:
- Outline the requirements
- List plugins that satisfy the needs
- Try out all alternatives one-by-one
- Decide on the best one to go with
- Go with this plugin.
django CMS is a relatively young product that thrives rapidly. Do not forget about regular updates of the system, preferably to LTS versions.
As your CMS evolves and acquires more and more plugins and applications, mind their compatibility and versioning. You could keep track of all plugins installed in a table, listing the CMS version they are compatible with.
- Also, do not forget to regularly update your internal docs on any CMS customizations, new plugins and applications installed, tips and tricks to use them, etc.
- To keep track of CMS users roles and permissions, we’d advise to create a matrix with all plugins and addons and corresponding privileges to use them listed in a table. This comes in handy when defining and managing a set of global, group, and page-specific permissions for every role and for every plugin installed. Keep this matrix up-to-date as your system gets more and more customizations hooked up.
Content management system is an important strategic investment for any company - no matter the type of website it is running. Amid myriad of CMS, we opted for django CMS, a modern and highly flexibly system belonging to Python ecosystem. Just like any software, django CMS has some counter-intuitive stuff and minor drawbacks. However, these are overshadowed by its rich potential for customizations and active community of contributors.
Need help with a CMS?
Thank you for contacting us! We would get back to you shortly (usually, within 24 hours on weekdays and 48 hours over weekends).
- Why Your Website Needs a Content Management System
- Software Licenses: Overview and Recommendations for Developers