Skip to content
Browse files

Fixed #17035, #17036 -- Clarified documentation regarding TemplateRes…

…ponse and middleware handling. Refs #16004. Thanks ptone.

git-svn-id: bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
1 parent 8b801a7 commit 5c8c7c34be173919501615151ab83229a1bd1c03 @carljm carljm committed
7 docs/ref/request-response.txt
@@ -758,3 +758,10 @@ types of HTTP responses. Like ``HttpResponse``, these subclasses live in
.. class:: HttpResponseServerError
Acts just like :class:`HttpResponse` but uses a 500 status code.
+.. note::
+ If a custom subclass of :class:`HttpResponse` implements a ``render``
+ method, Django will treat it as emulating a
+ :class:`~django.template.response.SimpleTemplateResponse`, and the
+ ``render`` method must itself return a valid response object.
3  docs/ref/template-response.txt
@@ -126,7 +126,8 @@ Methods
.. method:: SimpleTemplateResponse.render():
Sets :attr:`response.content` to the result obtained by
- :attr:`SimpleTemplateResponse.rendered_content`.
+ :attr:`SimpleTemplateResponse.rendered_content`, runs all post-rendering
+ callbacks, and returns the resulting response object.
:meth:`~SimpleTemplateResponse.render()` will only have an effect
the first time it is called. On subsequent calls, it will return
24 docs/topics/http/middleware.txt
@@ -121,22 +121,20 @@ middleware is always called on every response.
.. method:: process_template_response(self, request, response)
-``request`` is an :class:`~django.http.HttpRequest` object. ``response`` is the
-:class:`~django.template.response.SimpleTemplateResponse` subclass (e.g.
-:class:`~django.template.response.TemplateResponse`) object returned by a
-Django view.
-``process_template_response()`` must return an
-:class:`~django.template.response.SimpleTemplateResponse` (or its subclass)
-object. It could alter the given ``response`` by changing
-``response.template_name`` and ``response.context_data``, or it could
-create and return a brand-new
-:class:`~django.template.response.SimpleTemplateResponse` (or its subclass)
+``request`` is an :class:`~django.http.HttpRequest` object. ``response`` is a
+subclass of :class:`~django.template.response.SimpleTemplateResponse` (e.g.
+:class:`~django.template.response.TemplateResponse`) or any response object
+that implements a ``render`` method.
+``process_template_response()`` must return a response object that implements a
+``render`` method. It could alter the given ``response`` by changing
+``response.template_name`` and ``response.context_data``, or it could create
+and return a brand-new
+:class:`~django.template.response.SimpleTemplateResponse` or equivalent.
``process_template_response()`` will only be called if the response
instance has a ``render()`` method, indicating that it is a
+:class:`~django.template.response.TemplateResponse` or equivalent.
You don't need to explicitly render responses -- responses will be
automatically rendered once all template response middleware has been

0 comments on commit 5c8c7c3

Please sign in to comment.
Something went wrong with that request. Please try again.