'Calculate the ETag, if needed.
When the status code of the response is 404, it may redirect to a path
with an appended slash if should_redirect_with_slash() returns True.'

def process_response(self, request, response):

    if (response.status_code == 404):
        if self.should_redirect_with_slash(request):
            return self.response_redirect_class(self.get_full_path_with_slash(request))
    if (settings.USE_ETAGS and self.needs_etag(response)):
        warnings.warn("The    USE_ETAGS    setting    is    deprecated    in    favor    of    ConditionalGetMiddleware    which    sets    the    ETag    regardless    of    the    setting.    CommonMiddleware    won't    do    ETag    processing    in    Django    2.1.", RemovedInDjango21Warning)
        if (not response.has_header('ETag')):
            set_response_etag(response)
        if response.has_header('ETag'):
            return get_conditional_response(request, etag=response['ETag'], response=response)
    if ((not response.streaming) and (not response.has_header('Content-Length'))):
        response['Content-Length'] = str(len(response.content))
    return response
