I haven’t written anything in quite a while as I’ve been too busy hacking out annoying ASP.Net code in my working life. That doesn’t mean I haven’t been reading up on Django, especially looking into what apps have already been written for Django. And I am quite amazed. I am sure I can “cobble” together a professional, industrial strength web based CMS through the use various Django apps without really having to learn how to program python, beyond understanding the syntax that is.
My ultimate aim is to create an app that helps people write clear, meaningful, accessible content that is semantically marked up. However I have decided to first just get a basic CMS up and running with which I can manage a couple of my own personal sites. I am hoping this will give me a deeper understanding of Django. The target audience for my CMS are people wanting to create small websites with maybe upto two dozen pages on them. What I want is the following:
- Basic admin features. Three levels:
- Admin: complete control over website
- Editor: can add/remove pages and modify content
- Author: can only write content
- Standard site administration enbaling the creation and editing of pages
- Complete version history
- Some form of tagging. Not sure exactly how this will be used, but I would like to be able to tag content
- Some kind of multilingual functionality. Not sure yet how this should look, but it is anyway low priority.
- Some way of managing more than one site from the same install
Well, there seems to be a Django app for each of these:
- For the admin features: django.contrib.auth should do the trick.
- For basic page features there were a bunch of options, but this looked the most suitable for my needs:django-page-cms
- For versioning: django-reversion
- For tagging: django-tagging
- For multilingual stuff django-page-cms seems to do the trick. But there is also django-multilingual which looks interesting
- For multiple sites, there is the “sites” framework that ships with Django: django.contrib.sites.models
This post is my “back of the envelope” sketch. There’s lots of interesting tools and apps listed here. Now I need to figure out how to combine them into something meaningful.
Tags: cms, django, tagging, versioning