Leonardo Giordani gives a survival guide for novices on django’s class based views: what they are and how they work.
What are they? Django views based on python classes. For many this translates into some django stuff based on some python magic. If you followed the tutorial but don’t exactly understand what a view is, class based views can be quite hard to understand.
A view is the part of django that gets the request and returns a response. Views used to be monolythic functions. A request comes in and a response goes out. It is hard to replace one specific part of it. If you could split it up, you could replace the individual parts.
Object oriented programming (so: classes) is a good way to split up something that’s monolythic into several separate methods on an object. That’s what django’s class based views do.
In the case of class based views, it is worth your time to actually read django’s source code. Get familiar with the details, it helps you understand what happens.
It goes deeper and deeper. Automatic query sets, form handling, whatever. And every small piece can be changed by you. You still keep all the rest of the functionality and only change what you need to.
Handy: if you extracted arguments or keyword arguments in your url, you can access them inside your views as self.args and self.kwargs.
Several of the provided base classes deal with CRUD (create/replace/update/delete) operations. get(), post(), etc. This makes it easy to work with. Ever seen the regular if request.method == 'POST' in a form-handling page? No need to do that anymore as get() and post() do the right thing. And both methods use the same methods and attributes to give you your form or the model you’re working on.
In case you need to delve in to the class hierarchy, look at http://ccbv.co.uk.
For a simpler class hierarchy, look at django vanilla views.
My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):