(Presentation at the Dutch Django/web meeting)
There are quite a lot of Django CMSs already. Django-fiber (small to medium), django-cms (medium to large), FeinCMS (small to large), etc. Everyone seems to build their own. Everyone has their own preferences, apparently.
What happed to the reusable applications by James Bennett (there’s also a video)? His four main points:
Do one thing and do it well.
Don’t be afraid of multiple apps.
Write for flexibility.
Build to distribute.
Outside of Django we have two big contenders:
Wordpress. Easy to setup, but you have a plugin hell.
Umbraco (dotnet) on the enterprise side. Customized UI layouts and customized page node types.
(Personal note: why the xyz didn’t he mention Plone? The best CMS in Python!)
He also made a CMS. All consisting of separate apps, each for a separate purpose:
Page contents: django-fluent-contents. This is also useable in your own application. It has quite some plugins, for instance for markdown/rst/textile. Google docs viewer (pdf/doc). Twitter feed, forms, code highlighting (pygments), gist, iframes, disqus, etc. This app is just for showing content on your page.
Page structure means a tree structure: django-fluent-pages. It uses django-mptt for the tree and django-polymorphic for grabbing all model subtypes, too, when querying for a certain base type. His app also allows you to add redirect pages in the tree.
Again, you can use this app seperately from all the other apps.
Blog: lots and lots of separate apps for all the functionality.
Commenting. Also lots of separate apps.
What he wants to tell us: don’t be afraid to build everything as multiple separate apps!
My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):