5858 from django .http .request import QueryDict
5959 from django .utils .datastructures import MultiValueDict
6060
61+ from sentry_sdk .scope import Scope
6162 from sentry_sdk .integrations .wsgi import _ScopedResponse
6263 from sentry_sdk ._types import Event , Hint , EventProcessor , NotImplementedType
6364
@@ -346,8 +347,8 @@ def _before_get_response(request):
346347 )
347348
348349
349- def _after_get_response (request ):
350- # type: (WSGIRequest) -> None
350+ def _attempt_resolve_again (request , scope ):
351+ # type: (WSGIRequest, Scope ) -> None
351352 """
352353 Some django middlewares overwrite request.urlconf
353354 so we need to respect that contract,
@@ -356,19 +357,24 @@ def _after_get_response(request):
356357 if not hasattr (request , "urlconf" ):
357358 return
358359
360+ try :
361+ scope .transaction = LEGACY_RESOLVER .resolve (
362+ request .path_info ,
363+ urlconf = request .urlconf ,
364+ )
365+ except Exception :
366+ pass
367+
368+
369+ def _after_get_response (request ):
370+ # type: (WSGIRequest) -> None
359371 hub = Hub .current
360372 integration = hub .get_integration (DjangoIntegration )
361373 if integration is None or integration .transaction_style != "url" :
362374 return
363375
364376 with hub .configure_scope () as scope :
365- try :
366- scope .transaction = LEGACY_RESOLVER .resolve (
367- request .path_info ,
368- urlconf = request .urlconf ,
369- )
370- except Exception :
371- pass
377+ _attempt_resolve_again (request , scope )
372378
373379
374380def _patch_get_response ():
@@ -431,6 +437,10 @@ def _got_request_exception(request=None, **kwargs):
431437 integration = hub .get_integration (DjangoIntegration )
432438 if integration is not None :
433439
440+ if request is not None and integration .transaction_style == "url" :
441+ with hub .configure_scope () as scope :
442+ _attempt_resolve_again (request , scope )
443+
434444 # If an integration is there, a client has to be there.
435445 client = hub .client # type: Any
436446
0 commit comments