          if self.method is None or not self.get_full_path():
              return '<%s>' % self.__class__.__name__
          return '<%s: %s %r>' % (self.__class__.__name__, self.method, self.get_full_path())
  
      def _get_raw_host(self):
          """
          Return the HTTP host using the environment or request headers. Skip
          allowed hosts protection, so may return an insecure host.
          """
 
</s> remove * ...
 </s> add * Added :attr:`.HttpRequest.headers` to allow simple access to a request's
  headers. </s> remove     DictWrapper, ImmutableList, MultiValueDict, MultiValueDictKeyError,
    OrderedSet,
 </s> add     CaseInsensitiveMapping, DictWrapper, ImmutableList, MultiValueDict,
    MultiValueDictKeyError, OrderedSet, </s> remove from django.http.request import split_domain_port
 </s> add from django.http.request import HttpHeaders, split_domain_port </s> remove from django.utils.datastructures import ImmutableList, MultiValueDict
 </s> add from django.utils.datastructures import (
    CaseInsensitiveMapping, ImmutableList, MultiValueDict,
)
    @cached_property
    def headers(self):
        return HttpHeaders(self.META)

          if self.method is None or not self.get_full_path():
              return '<%s>' % self.__class__.__name__
          return '<%s: %s %r>' % (self.__class__.__name__, self.method, self.get_full_path())
  
    @cached_property
    def headers(self):
        return HttpHeaders(self.META)

      def _get_raw_host(self):
          """
          Return the HTTP host using the environment or request headers. Skip
          allowed hosts protection, so may return an insecure host.
          """
keep keep keep add keep keep keep keep keep
 Fixed #20147 -- Added HttpRequest.headers. 
django/http/request.py