From 9eb49af821546af1cae8f3a91aefea4b99a6478f Mon Sep 17 00:00:00 2001 From: Kevin Christopher Henry Date: Thu, 13 Oct 2016 19:52:18 -0400 Subject: [PATCH] Refs #19705 -- Documented decorator ordering with @condition(). --- docs/topics/conditional-view-processing.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/topics/conditional-view-processing.txt b/docs/topics/conditional-view-processing.txt index 7f1fde0fb9..7fabacf6c5 100644 --- a/docs/topics/conditional-view-processing.txt +++ b/docs/topics/conditional-view-processing.txt @@ -105,6 +105,18 @@ for your front page view:: def front_page(request, blog_id): ... +.. admonition:: Be careful with the order of decorators + + When ``condition()`` returns a conditional response, any decorators below + it will be skipped and won't apply to the response. Therefore, any + decorators that need to apply to both the regular view response and a + conditional response must be above ``condition()``. In particular, + :func:`~django.views.decorators.vary.vary_on_cookie`, + :func:`~django.views.decorators.vary.vary_on_headers`, and + :func:`~django.views.decorators.cache.cache_control` should come first + because :rfc:`RFC 7232 <7232#section-4.1>` requires that the headers they + set be present on 304 responses. + Shortcuts for only computing one value ======================================