Hi, I’m Reinout van Rees. You’re now reading my book on Django, so I’ll give you some background information on myself and the book, first. You’re free to read the actual Django meat of the book, but this introduction might be fun, too.

I’ll tell you a bit about my background, about the the background of this book and about the book’s structure. I’ll tell you how you can pay me luxurious sums for this wonderful piece of timeless prose and how to give feedback.

Reinout’s background

By education, I’m a civil engineer. A military engineer builds missiles, a civil engineer builds targets. So if an architect designs something, we get to make sure it doesn’t collapse. And if there’s a big storm surge barrier or something like that: civil engineers.

By hobby and self-education, I’m a programmer. Pascal in the 1990s, Python since 2000. Mostly Zope and Plone in the beginning; Django since about three years. So I’ve got a quite diverse background, especially since I’ve delved into the deep, deep pits of Zope/Plone complexity. Lovely stuff. Learned a lot. Now I’m working full-time with Django. Lovely stuff!

By profession, I’m both a civil engineer and a programmer at the moment. I work at Nelen & Schuurmans in the Netherlands, a firm that does consultancy and IT development for water quality and water protection clients. So if you don’t want water to flood your house and if you don’t want your water to stink because of floating dead fish: give us a call. We’ll give you a nice Django website.

By internet visibility, I’m pretty visible. At least in the Python/Django community, because my weblog at is mostly about Python and Django. I write down a lot of what I discover or build, but I also make summaries of each and every (Django) conference or Dutch Python/Django user group meeting I attend. That sure helps a lot.

By hobby, I am a recumbent cyclist and a medieval swordfighter. The first isn’t of interest here, but the second one is. Medieval swordfighter, you say? Yes, that’s relevant to the book. I’m picking a medieval theme as my main example, that’s why.

Background of the book

Just a couple of weeks after 2011’s conference I got an email from the pragmatic programmers whether I was interested to write a book about Django for them. I’m pretty sure that was because I just wrote a pretty decent summary of each and every talk on that year’s conference. Liveblogging. Writing a book! Fun! An honour! But why are they asking me just when I’m moving to another house with my family?!?

Anyhow, I started writing the book and postponed quite some work on our new house. For about 9 months I was busy writing. They even brought in a co-author (thanks, Harry, for all you did!). But after 9 months is was clear that it was simply taking too much time. Abort abort abort: the book got canceled.

Rightly so, as it really took too much time. I think my writing style was out of sync with theirs. And the level of penmanship they require wasn’t what I could manage. I do tend to be a tad verbose... If I can drag in another sub-subject, I will drag it in. Getting me in line took too much time.

After the cancellation I took time off. Finish the front garden, for instance. And I took a rest from the relentless book-writing pace. Writing a book really takes a lot of energy! I couldn’t keep it up anymore so I took a well-deserved rest.

In november 2012, I restarted my book project. Django 1.5’s christmas 2012 release date told me it was good to get a core part of the book finished by the same time. Somebody had to tell a good story about class based views, right? First get the core finished, then add the other necessary parts. and if there’s interest, finish it all off with bonus content.

Book structure

The book is divided up into three parts.

  • Django’s foundation: an intro, models, views, templates, URLs. That’s the absolute basic part of Django that you need to understand.
  • Django’s most common building blocks: what you’ll use and customize most of the time when building your Django websites. Model queries, admin customization, packaging Django applications, javascript/css, security, editing/forms and hosting/webserver configuration.
  • Extras that can be very handy. REST APIs, south automatic database migrations, Python intro for new programmers, debugging, management commands, context processors, buildout, nosql.

By the time you read this, the book won’t be fully ready yet. I aim to finish the first part to co-incide with Django 1.5’s christmas 2012 release. I’ll finish the second part in the months after that.

The extras? Those are extra. Some of them I’ll want to write for my own fun. Some of them I’ll write if there’s interest in my book (see below) :-)

Paying me ridiculous amounts of money

Why am I writing this book? Am I doing it for the money? Mostly not, but partially yes.

I can write. I’ve written a 250 page PhD thesis. I write a lot on my weblog. So writing is fun. And I’ve had the idea of writing a (second) book in my mind for some time. Being asked to write a Django book (see above) provided the spark to actually start!

Writing takes a ridiculous amount of time, though. Time I’m not spending cycling or swordfighting or fixing up the house or writing software. So a bit of compensation is in order. The goal that I have in mind is to try and earn 5000 Euro, enough to pay off my remaining study debt. How’s that for a goal? (I don’t yet know how it stands with taxes, so I might need to actually earn more to get my hands on 5000).

On the other hand, I’m not going to bother with DRM-protected ebooks. Or HTML pages behind a paywall. You can read the HTML for free and download the PDF right from my website. I am asking for a donation, though.

So... if this book is useful to you, giving me some money is a good way to say thanks. I’d say something between 10 and 20 Euro, more or less. Actually, anything is good, but that’s my suggestion. I haven’t yet given you my bank account details or paypal account, though. The reason? I haven’t finished even the first part of the book yet. I don’t want to accept money before I’ve finished with that!

Giving me feedback

I’m writing a book on programming and Django. So there’s only one real choice for giving structured feedback: github. . Open issues or give me pull requests.

If you’ve got generic feedback, it is probably easiest to send me a regular email at

Anyway... have fun with the book!