Django blogs vs. vs.

Going by what I read, there’s lots of technical interest in writing Django blogging applications.  Django-users regularly gets questions about it, and it’s easy to come across a related blog post. For example, Patrick Altman wrote I want to Move my Blog to Django, and James wrote Where is Django’s blog application?

This puzzles me, because a Django blogging application is a dead end.

It’s good because…

It’s a good first application for a Django newbie. The UX model and forms are simple, and you can copy layout tricks from existing blogs. The database schema is easy to make from scratch, or you can copy an example from the web if you’re expedient.

Even if you start with copied code, you’ll learn many concepts. You’ll hit table relationships, URLs, ORM lookups, bound and unbound forms, errors, generic views, flatpages, CSS, and more.  You can choose to add authorization, I18N, caching, and fancy template tags.

You may not dive into very deep waters, but a simple blog can introduce you to a wide range of Django concepts, and some of its interesting corners.

Some revel in customization. This is a motherhood-and-apple-pie issue for many. They want at least the potential for extreme customization, even if, as Heidi Adkisson recently noted, they usually don’t take advantage of it. For example, even though Akismet does the anti-spam job very well, they may not like being locked into it, on principle. Or not like another party making the anti-spam decision for them — even if they would make the same decision.

But those who really do customize their blogs can do so, since the code is theirs to hack.

Some see WordPress as evil. I don’t understand this sentiment, but it’s out there.  I’ve used WordPress in both self-hosted and configurations, and it’s not at all evil. It’s supplied under a GPL, so you can hack the code if you want.

Movable Type is also open-source.  A Google search produces lists of open-source blogging applications, so if you want to host a blog but not be locked into an “evil empire,” there are easier ways to do it than writing your own.

If Rails has it, Django should too. This reasoning is attractive in technology turf wars. It also begs the question of why Rails has blogging applications, since the next section is also true for them.


Now consider the downsides to writing and maintaining your own blogging application, before you join the zeitgeist:

“Conventional” blogging applications are excellent. They have many built-in options, and you can download many more if you self-host.  Since at least two of the major players are open-source, you can hack their existing code. True, it won’t be Django, but at least the option’s there. You’ll find more gee-whiz features in any of the popular blogging systems than you could ever code up.  With all the WordPress themes and widgets out there, what will you develop that’s new and exciting?

Then there’s “professional-grade” e-magazine software. If you want more than conventional blogging software, you could use software like ExpressionEngine. Their free edition is crippleware, but still has more features than standard blogging software.  For $100, you can get a Personal license with all the features enabled. Your priorities are misplaced if your blog needs more than this.

Content matters more than form. The energy that goes into laying out eye candy (the code to support the eye candy, and the candy itself) isn’t going into research, better editing before posting, thinking up interesting topics, counting to 10 before responding to a flame, etc.

I’m not saying we should all use typewriter fonts, or not use XHTML. I am saying you should reconsider if you want some gee-whiz feature in your blog.  Your words should matter a lot more than their format, so don’t write an application for this reason.

Customization means more work. You know the routine: Check the server logs, something’s crashed, debug the exception, you missed this corner case, update the code and restart… You have much more to worry about with your own application. This energy could go to other activities — like producing more compelling content.

Maintaining a blogging app won’t teach you many things. It’ll be great for learning the basics, but you then ought to move on to bigger projects.  The best way to learn new things is by doing new things, and tweaking your blogging app won’t teach you anywhere near as much as jumping into a new project’s 12′ waters.

The end result is…a blog. The B-List is a great blog.  There’s more Django knowledge in James’ right pinkie finger than I may ever have.  He’s an excellent writer.

But his Django-powered blog is…a blog!  The formatting is OK but not novel. It works fine.  It’s perfectly acceptable. He wrote blogging software, and it’s fine, but his blog doesn’t look any better than if he had used WordPress or Movable Type.  His words are the attraction — content over form!

It should be an exercise. Just an exercise.

A blogging application is a great homework assignment for learning Django. It’ll get you familiar with the core concepts, and you’ll learn a few of the framework’s nooks and crannies.  But after you get it running put it aside, host your blog on, and call it a day.

If I’ve missed some positive angle to blogging applications, I’d enjoy hearing it.  If I’ve mis- or under-represented some aspect of them, tell me. vs.

This has been written about before (including on WordPress’ site), but I’ll summarize the differences.  Both of these are superior to writing your own blogging application. is a shared-hosting version of the WordPress blogging system.  It’s very easy to use, but offers fewer customization options than Most significantly:

  • You can’t upload a theme from the web.  Instead, you must choose from their repertoire of 66 themes.  (But you can customize the CSS.)
  • You can’t  upload widgets, or plug in random JavaScript or Flash
  • Akismet is your only choice for spam protection

OTOH, they maintain all the software under the hood, the site’s always up, it’s free, you can export to another blog, and for a small charge you can register a blog domain with email addresses.  No security hassles, no upgrading hassles, no backup hassles!

With downloading comes ultimate customization.  You can hack the code to your heart’s content, but then again, you have to update it and you’re responsible for your own security.

7 thoughts on “Django blogs vs. vs.

  1. What you say is fine if all someone wants is a blog, or if people are writing their own one-off blogging apps.

    But I see a lot of interest in standardized support for top-notch blog functionality for deploying alone or with other django apps.

    And I’ll go further to say that there is also interest in building a CMS on top of django, with all the sorts of theming, plug-and-play css options, etc. that wordpress or plone already offer. But done right, and securely, in python on django, for deployment by non-programmers.

    I’ve heard over and over that many in the django community don’t want that as their focus. Fine! But django-the-framework is still a great building-block for a great CMS, IMHO.

    So again – if getting a blog up is what you want – yes, there are many options. But if folks want to help django be a player in the blogging world, an important area of web interactivity, then by all means lets collaborate on getting some first-class software and designs out there.

  2. Hmm, I’m not aware of substantial interest in standardizing Django blog functionality. The most recent relevant thread I found on django-users is this one. Here are some comments from it:


    “I’m not necessarily convinced that there’s a great need for a “standard” Django blog application; it would appease some folks, but I have a feeling that in the Django world a lot of people really would be happier, in the long run, writing their own app that does what they need…”

    “It’s easy to write a “basic” blog in Django. If that’s all people want, then great. Something like that will work perfectly for the majority of bloggers (who probably won’t get that much readership anyway)…

    But all this talk about making a “full-featured” blog app in Django — one that will really get noticed (and thus get django noticed): what we need is a blog with *more features* that could actually begin to compete with something like WordPress**.

    I mean stuff like Akismet, Flickr integration, delicious/magnolia bookmarks, multi-author (with per-object permissions), importing from WordPress, statistics, easy web-based installation (NOT easy_install but a wizard someone could follow, like the WordPress install, lots of customization, integration with pingback services, etc…..

    If that sounds like a lot, that’s because it is. To even be a blip on the screen it will need this kind of stuff. I also doubt the django-admin will be sufficient for an application like this…”

    “All I tried to say is perhaps that people who are looking for a simple to use blogging solution might want to get there with the least amount of work. Installing WordPress is damn easy. Everybody with “computer knowledge” therefore typically recommends WordPress (let’s not dive into the discussion here that PHP is nearly always preinstalled and Python not).”


    I won’t argue that nobody is interested in this, because someone’s always interesting in something. But I don’t see a groundswell of demand for a standard blogging app. If you do, please post some links or information about it.

    Among the existing Django blogging applications out there, the best-known one is probably Blogmaker. I’ve never used it. The documentation claims it’s full-featured and production-quality. If it emerges as the de jure or de facto standard, it might change the blogging landscape. If that happens, more power to it!

    But your comment touched on two other issues that speak to how much development will be needed on projects such as Blogmaker.

    Today, it’s easy to deploy existing open-source blogging applications along with Django. Most blogs want to live at an URL like, and that’s easy to do with apache redirects. It’s what TrenchMice does. TrenchMice is 100% Django, with a WordPress blog.

    “Easy” is a fuzzy term. It wasn’t “easy as pie” to set up, but it wasn’t hard either. I can’t compare its ease of installation with the ease of installation of a nonexistent Django blogging competitor. My point is that “top-notch blog functionality” can be deployed in Django applications today.

    Which leads me my second point, which is that existing open-source blogging services/products have tons of features. In order to compete with, say, WordPress, you’re talking about a lot of development. In technical terms, a “shitload.” 🙂

    I’m not saying it can’t be done, but the “top-notch blog functionality” bar is very high. And the existing blogging products won’t be standing still while this development occurs. BTW, WordPress is open-source, you have just as much (I would argue far more, if you count themes) development activity in it than you would have on a Django blogging platform.

    And after all that development, we’ll have…a blogging engine. Gee, just like we have today.

    Thanks for writing!

  3. To date, all blogs are written so as to support diary entries, or glorified newspaper articles. However, I want my blog to host articles written in a more formal style, something that elevates the reader beyond a fourth-grade reading level.

    To this end, I desire a blog that supports a proper title, author, abstract, body (including structured sections), footnotes, and a proper bibliography.

    Can your blog software do this?

    Didn’t think so.

  4. We feel that WordPress is the right platform to promote our dolphin spotting, dhow sailing, snorkeling, and seafood dining at Charlie Claw’s here on Wasini Island because it will allow our guests and future customers to interact with us in a way that our old site does not. We are just waiting for our FTP server to be fixed so we can install WP with the K2 theme.

    We really don’t see anything other blogging/CMS app outdoing WordPress now that it’s at ver 2.8.4. Even the big boys are WordPressing too. 🙂

    Charlie Claw’s

  5. Good article. As a WordPress, Expression Engine and Django user I can relate to all your arguments. I do agree with Neil though that there is still a lot of interest in a good blog/cms django app that can be easily deployed and adapted.
    I am currently working on a django intranet application for a client and sometimes feel that some functionality we are building is simply a WordPress/EE/Any CMS functionality that would have been so much easier to use if it actually was WordPress/EE etc. But since it has to fit into the rest of the django application, we have to build it ourselves.
    There is a django-cms project (google it) that seems interesting.


  6. Interesting article. One major problem with open source blogging software is that you MUST be up to date or you’ll get hacked.

    Recent versions of wordpress make that easy, but still I see many blogs being plagued by spam or simply hacked.

    But it’s true that using a ready made blog engine, makes you focus on the content (until you play with too many plugins). I developed my own blogging engine (plus other stuff around it) using Ruby on Rails, but sometimes a stupid bug can crash my whole website.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.