Ticket #15906: patch_15906.diff

File patch_15906.diff, 2.9 KB (added by Zbigniew Siciarz, 6 years ago)

A new section on how to use head() in a generic view.

  • docs/ref/class-based-views.txt

    diff --git a/docs/ref/class-based-views.txt b/docs/ref/class-based-views.txt
    index 692417e..5ab948e 100644
    a b View 
    867867        delegated to :meth:`~View.get()`, a ``POST`` to :meth:`~View.post()`,
    868868        and so on.
     870        By default, a ``HEAD`` request will be delegated to :meth:`~View.get()`.
     871        If you need to handle ``HEAD`` requests in a different way than ``GET``,
     872        you can override the :meth:`~View.head()` method.
     873        See :ref:`supporting-other-http-methods` for an example.
    870875        The default implementation also sets ``request``, ``args`` and
    871876        ``kwargs`` as instance variables, so any method on the view can know
    872877        the full details of the request that was made to invoke the view.
  • docs/topics/class-based-views.txt

    diff --git a/docs/topics/class-based-views.txt b/docs/topics/class-based-views.txt
    index 3812fae..1496e63 100644
    a b Because of the way that Python resolves method overloading, the local 
    554554:class:`JSONResponseMixin` and
     557.. _supporting-other-http-methods:
     559Supporting other HTTP methods
     562Suppose somebody wants to access our book library over HTTP using the views
     563as an API. The API client would connect every now and then and download book
     564data for the books published since last visit. But if no new books appeared
     565since then, it is a waste of CPU time and bandwidth to fetch the books from
     566database, render a full response and send it to the client. It might be
     567preferable to ask the API when the most recent book was published.
     569We define the URL to book list in the URLconf::
     571    from django.conf.urls import patterns
     572    from books.views import BookListView
     574    urlpatterns = patterns('',
     575        (r'^books/$', BookListView.as_view()),
     576    )
     578And the view::
     580    from django.http import HttpResponse
     581    from django.views.generic import ListView
     582    from books.models import Book
     584    class BookListView(ListView):
     586        model = Book
     588        def head(self, *args, **kwargs):
     589            last_book = self.get_queryset().latest('publication_date')
     590            response = HttpResponse('')
     591            # RFC 1123 date format
     592            response['Last-Modified'] = last_book.publication_date.strftime('%a, %d %b %Y %H:%M:%S GMT')
     593            return response
     595If the view is accessed from a ``GET`` request, a plain-and-simple object
     596list is returned in the response (using ``book_list.html`` template). But if
     597the client issues a ``HEAD`` request, the response has an empty body and
     598the ``Last-Modified`` header indicates when the most recent book was published.
     599Based on this information, the client may or may not download the full object
    557602Decorating class-based views
Back to Top