  
              if response.has_header('ETag'):
                  return get_conditional_response(
                      request,
                      # get_conditional_response() requires an unquoted version
                      # of the response's ETag.
                      etag=response['ETag'].strip('"'),
                      response=response,
                  )
  
          return response
  
 
</s> remove                 etag=etag,
 </s> add                 etag=unquote_etag(etag), </s> remove from django.utils.http import http_date, parse_http_date_safe
 </s> add from django.utils.http import http_date, parse_http_date_safe, unquote_etag </s> remove * ...
 </s> add * Fixed a regression in ``ConditionalGetMiddleware`` causing ``If-None-Match`` checks
  to always return HTTP 200 (:ticket:`26024`).
                    etag=unquote_etag(response['ETag']),
  
              if response.has_header('ETag'):
                  return get_conditional_response(
                      request,
                    etag=unquote_etag(response['ETag']),
                    etag=unquote_etag(response['ETag']),
                    etag=unquote_etag(response['ETag']),
                      response=response,
                  )
  
          return response
  
keep keep keep keep replace replace replace keep keep keep keep keep
 Fixed #26024 -- Fixed regression in ConditionalGetMiddleware ETag support.

Thanks Denis Cornehl for help with the patch. 
django/middleware/common.py