﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
33396	Add the ResolverMatch's name to the technical 500 page.	Keryn Knight	Hrushikesh Vaidya	"Way back when in #22756, I asked for and was given a lovely addition to the **technical 404 page**, so that when `raise Http404('...')` was used it would report the view being executed, so that coming back to a project and getting an error would give me a hint where to look.

It looks like this, give or take alignment:
{{{
Request Method:	GET
Request URL:	http://localhost:8080/egsdh
Raised by:	__main__.ItemDetail
}}}

Today I'm here to ask for the same in the **technical 500 page**.
I just opened a project from ''about 3 weeks ago'' and in that short time had apparently forgotten what views were mounted on what URLs, and however many years after that ticket, Django still doesn't have a management command for printing me the URLs (... sigh), so I had to go digging again to deal with the error I'd evidently left myself.

`django.views.debug.ExceptionReporter.get_traceback_data` already has awareness of the request (`if self.request is not None`) which it uses to print the GET/POST/etc. I'd like to suggest that within that block, we do something like:

{{{
if self.request is not None:
    try:
        view_name = self.request.resolver_match._func_path
    except Exception:
        view_name = None
    c['view_name'] = view_name
}}}

and then adjust the template to have a `Raised by: {{ view_name }}` line as the technical 404 page, guarding it with an `{% if %}` test. We might want to change the label from `Raised by` across both to something like `Raised during` or `During View` or something ...

The 500 page might thus look something like:
{{{
Request Method:	GET
Request URL:	http://localhost:8080/
View name:	__main__.ItemList
Django Version:	4.x.x
Exception Type:	ZeroDivisionError
Exception Value:division by zero
...
}}}

By the look of it, the code for the technical 404 page and the ResolverMatch name may ''mostly'' overlap in terms of calculation/output, except:
- #32260 was relatively recently patched into the 404 page, so that references `.view_class`
- `ResolverMatch` is separately ''aware'' that the `func` might be a `functools.partial`, but only within the `__repr__`
So it's possible there could be some tidying up/DRY aside from those edges."	New feature	closed	Error reporting	dev	Normal	fixed		Hrushikesh Vaidya	Ready for checkin	1	0	0	0	0	0
