@@ -22,20 +22,8 @@ def _process_response(self, response):
22
22
Common response processing logic.
23
23
"""
24
24
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 )
39
27
response .render ()
40
28
return response
41
29
@@ -53,3 +41,22 @@ def process_request(self, request):
53
41
if iscoroutine (response ):
54
42
return self .aprocess_request (request , response )
55
43
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