          response['Date'] = http_date()
          if not response.streaming and not response.has_header('Content-Length'):
              response['Content-Length'] = str(len(response.content))
  
          etag = response.get('ETag')
          last_modified = response.get('Last-Modified')
          if last_modified:
              last_modified = parse_http_date_safe(last_modified)
 
</s> remove     If-Modified-Since, the response is replaced by an HttpNotModified.
 </s> add     If-Modified-Since, the response is replaced by an HttpNotModified. An ETag
    header is added if needed. </s> remove           appropriately.
 </s> add           appropriately. USE_ETAGS is deprecated in favor of
          ConditionalGetMiddleware.
        if self.needs_etag(response) and not response.has_header('ETag'):
            set_response_etag(response)

          response['Date'] = http_date()
          if not response.streaming and not response.has_header('Content-Length'):
              response['Content-Length'] = str(len(response.content))
  
        if self.needs_etag(response) and not response.has_header('ETag'):
            set_response_etag(response)

          etag = response.get('ETag')
          last_modified = response.get('Last-Modified')
          if last_modified:
              last_modified = parse_http_date_safe(last_modified)
keep keep keep add keep keep keep keep
 Fixed #26447 -- Deprecated settings.USE_ETAGS in favor of ConditionalGetMiddleware. 
django/middleware/http.py