Today is the day I’ve completed my blog! It now supports syndication via RSS and searching as well as the other stuff I talked about earlier. Apart from archiving, it’s all the standard stuff a blog should offer really, without all the ugliness. I’ve decided to go without archiving for the time being, and will probably add it in a little later. So for this post, I’m going to talk about how it works on the backend, remarks on how the development process rolled on compared to how it would have with PHP, and why my blog is so minimal compared to others.
How it works
Okay, so my blog has 4 classes: Category, Status, Post and PostImages. Category is pretty obvious; the labels at the bottom of each post that you can filter by. Status being one of either Draft or Published. There could be more but I doubt it. I decided to make this a class instead of a text field as the select box is a lot easier to use rather than being forced to type one of the same two things in every time.
From there, I’ve got four views: viewing a post, viewing all posts in reverse publication order, RSS and search. They’re all pretty self explanatory so I won’t explain them all too much. The list of all posts is using a generic list view, viewing a single post is just a template page, although I plan to try the detail view when I get around to it. Implementing RSS took literally 20 minutes, and I’d never read about it before, had no idea what a RSS feed looked like or anything. The django.contrib.syndication framework is really well written and easy to use.
I’ve implemented comments using django.contrib.comments, which while they were quite simple to use, as I’ve previously written about the documentation isn’t the best. There used to be two separate packages - FreeComment, for publically accessible commenting, and Comment, for people with accounts through Django to make comments. It’s been a while since they were like this, and were reconcilled into a single package quite a while back - yet there still exists a lot of documentation for the older way, with nothing next to it to say that it’s old material which shouldn’t be used.
However, once I realised I was reading dated documentation, setting up comments was a breeze. The search page is basically a stripped down version of the list view, and is what you should expect the archive page to look like when I get around to it as well.
How I Feel About It
I’m really happy with this. I’m really big on Python, so naturally this website feels like an extension of my arm. I’ve only been working with Django for about two-three days, and I already feel more comfortable with it than I do with PHP with Dwoo. For some reason, everything in PHP feels hacky to me, with so many options to do something simple. But Django gives you freedom of design while making all the boring parts so much easier.
Why It’s So Minimal
In terms of functionality, you’ll notice that it’s really minimal compared to other blogs, e.g. Wordpress. Ever seen a Wordpress blog? Here’s what Matt Cutt’s blog looks like:
Don’t get me wrong; Matt Cutts is a cool guy and everything. It’s just that blogs are notorious for having a mountain of links everywhere and are a total mess to look at. I think my website is pretty clean in general, and I wanted the blog to extend the same courtesy. In time I might add in extra content but I doubt it will ever become half as messy as a regular blog.
So overall the blog was very easy for me to build - not because I’m some wonderous developer, but because Python is a great language and Django certainly holds true to that awesomeness as well. I feel as though I could have made the blog a lot faster - probably 8-10 hours if I hadn’t been getting so distracted.