Changes between Initial Version and Version 1 of Ticket #23977, comment 5


Ignore:
Timestamp:
Nov 6, 2017, 6:52:34 AM (7 years ago)
Author:
Дилян Палаузов

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #23977, comment 5

    initial v1  
    11HttpResponseBase.setdefault should return a value in order to be consistent with dict.setdefault and what users expect from a function called setdefault on an objects, that behaves like dict.
     2
     3The method should also be utilized in the existing code:
     4{{{
     5diff --git a/django/middleware/common.py b/django/middleware/common.py
     6--- a/django/middleware/common.py
     7+++ b/django/middleware/common.py
     8@@ -107,8 +107,8 @@ class CommonMiddleware(MiddlewareMixin):
     9 
     10         # Add the Content-Length header to non-streaming responses if not
     11         # already set.
     12-        if not response.streaming and not response.has_header('Content-Length'):
     13-            response['Content-Length'] = str(len(response.content))
     14+        if not response.streaming:
     15+            response.setdefault('Content-Length', str(len(response.content)))
     16 
     17         return response
     18 
     19diff --git a/django/utils/cache.py b/django/utils/cache.py
     20--- a/django/utils/cache.py
     21+++ b/django/utils/cache.py
     22@@ -246,8 +246,7 @@ def patch_response_headers(response, cache_timeout=None):
     23         cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
     24     if cache_timeout < 0:
     25         cache_timeout = 0  # Can't have max-age negative
     26-    if not response.has_header('Expires'):
     27-        response['Expires'] = http_date(time.time() + cache_timeout)
     28+    response.setdefault('Expires', http_date(time.time() + cache_timeout))
     29     patch_cache_control(response, max_age=cache_timeout)
     30 
     31 
     32diff --git a/django/views/decorators/http.py b/django/views/decorators/http.py
     33--- a/django/views/decorators/http.py
     34+++ b/django/views/decorators/http.py
     35@@ -101,10 +101,10 @@ def condition(etag_func=None, last_modified_func=None):
     36             # Set relevant headers on the response if they don't already exist
     37             # and if the request method is safe.
     38             if request.method in ('GET', 'HEAD'):
     39-                if res_last_modified and not response.has_header('Last-Modified'):
     40-                    response['Last-Modified'] = http_date(res_last_modified)
     41-                if res_etag and not response.has_header('ETag'):
     42-                    response['ETag'] = res_etag
     43+                if res_last_modified::
     44+                    response.setdefault('Last-Modified', http_date(res_last_modified))
     45+                if res_etag:
     46+                    response.setdefault('ETag', res_etag)
     47 
     48             return response
     49 
     50}}}
Back to Top