Django First Impressions: The Tutorial

I finally started looking at Django, after mostly working with Pylons with a little side project in Werkzeug. I spent a couple of hours going through the Django tutorial, and wrote down my impressions while they were still fresh in my mind. The comments are a mix about Django and the tutorial and the Django website.

  • First of all I was surprised that the installation instructions did not mention you can run easy_install django to get going, even though egg files were mentioned.
  • Main tutorial is for SVN “release”. Personally I don’t consider it a release if it is just an svn revision! You need to notice to click a link to go to the latest actual release tutorial. These seem backwards to me; I’d expect the main version to be for the release, with a link to go to the SVN version.
  • Python config file makes me feel uneasy.
  • Absolute path requirement for config file options seems to make deployment a hassle.
  • Settings file location needs to be specified in an environment variable, which feels a little brittle and hacky.
  • Database API feels hacky with double underscore constructs, but on the other hand model creation seemed simpler than with SQLAlchemy.
  • The tutorial flowed smoothly until it was time to change admin templates. I was expecting a command to write a default admin template, but instead had to manually copy a file from the Django installation.
  • Admin stuff looks good, but why does the tutorial then break it?
  • There does not seem to be an interactive debugger in browser. Pylons and Werkzeug have this and I love it.
  • Development server does not restart automatically when new files are added. I can’t remember if Pylons/Werkzeug had this problem.
  • The term app isn’t properly explained when first used.
  • View term usage different from what I am used to.
  • I find myself preferring Django’s urlconf over routes at this point, seems clearer.
  • After getting used to Mako templates that allow you to run python, Django templates looks limiting and with some arcane constructs (witness forloop.counter).
  • I was surprised there was no sight of the popular “20 minute wiki” guide. Although a little web search shows showmedo video with this topic. After Pylons documentation I was also expecting some links to screencasts, but didn’t notice any. Again, doing some web searches lists several, but for some reason none prominently listed from the Django site (from the pages that I visited).

I was also left with the impression that I could replace pieces of the framework I don’t like with something else, for example the templates. I don’t know how difficult this is in practice, or how many components are meant to be replaceable. But at least the idea is there, which makes someone with Pylons background breath a little easier.

On to coding my first Django app, then.

Similar Posts:

    None Found


  1. Markus Gritsch:


    I recommend you also take a look at, since it lacks lots of the negative points you mentioned here.


  2. Andy Baker:

    If you install django-extensions ( and Werkzeug then you get nice interactive tracebacks from by running: runserver_plus

  3. masklinn:

    Please don’t hesitate:

    * Pushing your feedback to the Django mailing list

    * Opening documentation bugs (and maybe later providing patches) for the most problematic things (those parts of the tutorial that can be considered broken, not just design decisions you don’t like), documentation bugs and patches are considered first-class contribution by the Django community. The part about “app” not being explained well enough or the lack of a for admin customization for instance, could probably be tickets (if there aren’t tickets for that already, that is). Likewise for the site defaulting to SVN instead of “last stable release”.

    edit: that javascript be required to comment on your blog is fucking annoying, by the way.

  4. ldng:

    If you want to replace the django template engine,
    have a look at

  5. Dougal Matthews:

    Just to add a little to your points, I’ve been using Django for a year now.

    1. Before September last year the best version was in SVN. This was due to a huge number of changes that were happening.

    So you may find loads of data articles that relate to SVN version being the best. However, unless in dev I think the best approach now is to use the official releases. 1.0.2 at the moment, 1.1 soon.

    2. The settings file isn’t the best, my problem isn’t that its python but more it gets a bit big and unwieldy. I don’t have an issue with it being in python, after all that means its nice simple, clear and allows for great flexibility.

    3. Abolsute paths are simple assuming you set up your config properly. if you google around you will find out there is an easy way to deal with this. i think it should be used and included by default though. but yeah ive got projects running on my XP desktop, centos staging and centos production without any code changes.

    4. django-debug-toolbar might be what your looking for in terms of debugging.

    5. development server does restart for me when i add or change files… not sure whats going on with you there.

    6. The terms app and project are a bit confusing… I think in future release we will find this may change, perhaps with removing the project and only having apps.

    7. I also agree the django home page could do with a bit more in the way of video’s and such. Making it more interactive and flashy for newcomers.

    Just a few points of interest there 😉

  6. Heikki Toivonen:

    @Markus: I guess I’ll take a look at that eventually. Now it is Django’s turn 😉

    @Andy: Excellent! I’ll certainly try that.

    @masklinn: I am not sure if I’ll join the mailinglist yet, as I am already on quite a few. But I’ll certainly take a look at the tickets and file whatever seems like a clear issue that hasn’t been reported. Sorry about the JavaScript, but so far WP Hashcash has been really effective at combating comment spam and is no hindrance to most users. If there is a browser that makes it problematic to deal with it, please let me know. I am also open to suggestions regarding other antispam solutions.

    @Dougal: Thanks for the tips. As for dev server not detecting added files to restart, that is what the tutorial said. I didn’t actually test it, but I’ll try that out and report an issue if there is a discrepancy.