In this tutorial, we'll take a look at 6 of the most popular Python CMS platforms, including Django CMS, Wagtail, Mezzanine, and more. We'll discuss their features, pros and cons, and help you choose the right one for your needs.
When was the last time, that a pre-built software package you wanted to use got many things right, but in the end, you still needed to modify the core parts of the code just because it wasn’t (easily) possible to customize the way, a certain part of the system behaved?
Django came to rescue all of us, who were not happy with either doing everything on our own or customizing another software package until it was impossible to update.
The biggest strength of a framework-like design is, that it tries not to have a too strong view of what the user should do. It should make some things easy, but just GET OUT OF THE WAY most of the time.
Just after discovering the benefits of a framework-like approach to software design, we fall back into the rewrite everything all the time mindset and build a CMS which has very strong views how content should be structured. One rich text area, a media library and some templates, and we have a simple CMS which will be good enough for many pages. But what if we want more? If we want to be able to add custom content? What if the user can’t be trusted to resize images before uploading them? What if you’d like to add a gallery somewhere in between other content? What if the user should be able to administer not only the main content, but also a sidebar, the footer?
With FeinCMS, this does not sound too good to be true anymore. And it’s not even complicated.
FeinCMS is an extremely stupid content management system. It knows nothing about content – just enough to create an admin interface for your own page content types. It lets you reorder page content blocks using a drag-drop interface, and you can add as many content blocks to a region (f.e. the sidebar, the main content region or something else which I haven’t thought of yet). It provides helper functions, which provide ordered lists of page content blocks. That’s all.
Adding your own content types is extremely easy. Do you like markdown that much, that you’d rather die than using a rich text editor? Then add the following code to your project, and you can go on using the CMS without being forced to use whatever the developers deemed best:
https://github.com/feincms/feincms
Plone is a user friendly and extensible Content Management System running on top of Python and Zope.
Its features include RDBMS integration, Python extensions, Object Oriented Database, Web configurable workflow, pluggable membership and authentication, Undos, Form validation, and many other features. Available protocols: FTP, XMLRPC, HTTP and WEBDAV Turn it into a distributed application system by installing ZEO.
For more information on Plone features, see https://Plone.com
Plone shares some of the qualities of Livelink, Interwoven and Documentum. It is the most secure, open source feature-complete out-of-the-box publishing system.
https://github.com/plone/Plone
A Django content management system focused on flexibility and user experience
Wagtail is an open source content management system built on Django, with a strong community and commercial support. It’s focused on user experience, and offers precise control for designers and developers.
Features
Open source enterprise content management system based on the Django framework.
Attention!
Please use the develop branch as the target for pull requests for on-going development.
Security fixes will be backported to older branches by the core team as appropriate.
Features
Developing applications that integrate with and take advantage of django CMS features is easy and well-documented.
Mezzanine is a powerful, consistent, and flexible content management platform. Built using the Django framework, Mezzanine provides a simple yet highly extensible architecture that encourages diving in and hacking on the code. Mezzanine is BSD licensed and supported by a diverse and active community.
In some ways, Mezzanine resembles tools such as Wordpress, providing an intuitive interface for managing pages, blog posts, form data, store products, and other types of content. But Mezzanine is also different. Unlike many other platforms that make extensive use of modules or reusable applications, Mezzanine provides most of its functionality by default. This approach yields a more integrated and efficient platform.
Features
In addition to the usual features provided by Django such as MVC architecture, ORM, templating, caching and an automatic admin interface, Mezzanine provides the following:
View on Github: https://github.com/stephenmcd/mezzanine
Kotti is a high-level, Pythonic web application framework based on Pyramid and SQLAlchemy. It includes an extensible Content Management System called the Kotti CMS.
Kotti is a high-level, Pythonic web application framework based on Pyramid and SQLAlchemy. It includes an extensible Content Management System called the Kotti CMS (see below).
Kotti is most useful when you are developing applications that
Built on top of a number of best-of-breed software components, most notably Pyramid and SQLAlchemy, Kotti introduces only a few concepts of its own, thus hopefully keeping the learning curve flat for the developer
Github: https://github.com/Kotti/Kotti
#python #programming #development