          the request path turns an invalid path into a valid one.
          """
          if settings.APPEND_SLASH and not request.path_info.endswith('/'):
              urlconf = getattr(request, 'urlconf', None)
              return (
                  not is_valid_path(request.path_info, urlconf) and
                  is_valid_path('%s/' % request.path_info, urlconf)
              )
          return False
  
      def get_full_path_with_slash(self, request):
          """
          Return the full path of the request with a trailing slash appended.
 
</s> remove     Return True if the given path resolves against the default URL resolver,
    False otherwise. This is a convenience method to make working with "is
    this a match?" cases easier, avoiding try...except blocks.
 </s> add     Return the ResolverMatch if the given path resolves against the default URL
    resolver, False otherwise. This is a convenience method to make working
    with "is this a match?" cases easier, avoiding try...except blocks. </s> remove         resolve(path, urlconf)
        return True
 </s> add         return resolve(path, urlconf)
            if not is_valid_path(request.path_info, urlconf):
                match = is_valid_path('%s/' % request.path_info, urlconf)
                if match:
                    view = match.func
                    return getattr(view, 'should_append_slash', True)
          the request path turns an invalid path into a valid one.
          """
          if settings.APPEND_SLASH and not request.path_info.endswith('/'):
              urlconf = getattr(request, 'urlconf', None)
            if not is_valid_path(request.path_info, urlconf):
                match = is_valid_path('%s/' % request.path_info, urlconf)
                if match:
                    view = match.func
                    return getattr(view, 'should_append_slash', True)
            if not is_valid_path(request.path_info, urlconf):
                match = is_valid_path('%s/' % request.path_info, urlconf)
                if match:
                    view = match.func
                    return getattr(view, 'should_append_slash', True)
            if not is_valid_path(request.path_info, urlconf):
                match = is_valid_path('%s/' % request.path_info, urlconf)
                if match:
                    view = match.func
                    return getattr(view, 'should_append_slash', True)
            if not is_valid_path(request.path_info, urlconf):
                match = is_valid_path('%s/' % request.path_info, urlconf)
                if match:
                    view = match.func
                    return getattr(view, 'should_append_slash', True)
          return False
  
      def get_full_path_with_slash(self, request):
          """
          Return the full path of the request with a trailing slash appended.
keep keep keep keep replace replace replace replace keep keep keep keep keep
 Fixed #32124 -- Added per-view opt-out for APPEND_SLASH behavior. 
django/middleware/common.py