Monday 3:40 p.m.–4:25 p.m.

Django Views: Functions, Classes, and Generics

Andrew Pinkham

Audience level:



At the heart of Django is the HTTP Request and Response cycle, powered by URL patterns and views that you must create. But what kind of view should you use? A view function? A class-based view? A generic class-based view? This talk is all about the essence of views, and will explore the differences, advantages and disadvantages of each type of view, finishing with a guide of when to use what.


The goal of this talk is to make views and HTTP as clear as daylight. This talk is for you if you're confused about:

  • how function views compare to class-based views
  • when to use generic class-based views-
  • the difference between class-based views and generic class-based views-
  • or when to use any of these

This talk will start with an introduction to HTTP and how Django handles HTTP. We will then look at each kind of view in Django, focusing on how each works and why Django implements it that way. This will allow us to look at the advantages and shortcomings of each type of view. Finally, with a full understanding of Django views, we will be able to easily determine when to use each type of view.

Table of Contents:

  • What is HTTP, anyway?
  • Django's HTTP Request/Response Cycle
    • What is a callable?
  • History of View Functions
    • Functions
    • Generics
    • Classes and Generics
  • View Functions
    • (or How I Learned to Stop Worrying and Love Non-Compliance)
  • Class Based Views
    • (or As DRY as the Sahara)
  • Generic Class Based Views
    • (or Oh For The Love of Graph Theory)
  • Enhancing Views
    • (or 1-Size fits no-one)
  • Fixing Your Views
  • When to Use What