@@ -22,20 +22,8 @@ def _process_response(self, response):
2222 Common response processing logic.
2323 """
2424 if 300 <= response .status_code < 400 :
25- redirect_to = response .get ("Location" )
26- if redirect_to :
27- status_line = f"{ response .status_code } { response .reason_phrase } "
28- cookies = response .cookies
29- context = {
30- "redirect_to" : redirect_to ,
31- "status_line" : status_line ,
32- "toolbar" : self .toolbar ,
33- }
34- # Using SimpleTemplateResponse avoids running global context processors.
35- response = SimpleTemplateResponse (
36- "debug_toolbar/redirect.html" , context
37- )
38- response .cookies = cookies
25+ if redirect_to := response .get ("Location" ):
26+ response = self .get_interception_response (response , redirect_to )
3927 response .render ()
4028 return response
4129
@@ -53,3 +41,22 @@ def process_request(self, request):
5341 if iscoroutine (response ):
5442 return self .aprocess_request (request , response )
5543 return self ._process_response (response )
44+
45+ def get_interception_response (self , response , redirect_to ):
46+ """
47+ Hook method to allow subclasses to customize the interception response.
48+ """
49+ status_line = f"{ response .status_code } { response .reason_phrase } "
50+ cookies = response .cookies
51+ original_response = response
52+ context = {
53+ "redirect_to" : redirect_to ,
54+ "status_line" : status_line ,
55+ "toolbar" : self .toolbar ,
56+ "original_response" : original_response ,
57+ }
58+ # Default implementation: return a SimpleTemplateResponse
59+ response = SimpleTemplateResponse ("debug_toolbar/redirect.html" , context )
60+ response .cookies = cookies
61+ response .original_response = original_response
62+ return response
0 commit comments