1. from django.http import HttpResponse, StreamingHttpResponse
    
  2. from django.urls import reverse
    
  3. from django.utils.deprecation import MiddlewareMixin
    
  4. 
    
  5. from . import urlconf_inner
    
  6. 
    
  7. 
    
  8. class ChangeURLconfMiddleware(MiddlewareMixin):
    
  9.     def process_request(self, request):
    
  10.         request.urlconf = urlconf_inner.__name__
    
  11. 
    
  12. 
    
  13. class NullChangeURLconfMiddleware(MiddlewareMixin):
    
  14.     def process_request(self, request):
    
  15.         request.urlconf = None
    
  16. 
    
  17. 
    
  18. class ReverseInnerInResponseMiddleware(MiddlewareMixin):
    
  19.     def process_response(self, *args, **kwargs):
    
  20.         return HttpResponse(reverse("inner"))
    
  21. 
    
  22. 
    
  23. class ReverseOuterInResponseMiddleware(MiddlewareMixin):
    
  24.     def process_response(self, *args, **kwargs):
    
  25.         return HttpResponse(reverse("outer"))
    
  26. 
    
  27. 
    
  28. class ReverseInnerInStreaming(MiddlewareMixin):
    
  29.     def process_view(self, *args, **kwargs):
    
  30.         def stream():
    
  31.             yield reverse("inner")
    
  32. 
    
  33.         return StreamingHttpResponse(stream())
    
  34. 
    
  35. 
    
  36. class ReverseOuterInStreaming(MiddlewareMixin):
    
  37.     def process_view(self, *args, **kwargs):
    
  38.         def stream():
    
  39.             yield reverse("outer")
    
  40. 
    
  41.         return StreamingHttpResponse(stream())