  
          if etag or last_modified:
              return get_conditional_response(
                  request,
                  etag=etag,
                  last_modified=last_modified,
                  response=response,
              )
  
          return response
 
</s> remove                     # get_conditional_response() requires an unquoted version
                    # of the response's ETag.
                    etag=response['ETag'].strip('"'),
 </s> add                     etag=unquote_etag(response['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(etag),
  
          if etag or last_modified:
              return get_conditional_response(
                  request,
                etag=unquote_etag(etag),
                  last_modified=last_modified,
                  response=response,
              )
  
          return response
keep keep keep keep replace keep keep keep keep keep
 Fixed #26024 -- Fixed regression in ConditionalGetMiddleware ETag support.

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