#32480: Standardization of the exception message in permission_denied() + fixing
the comments in views.defaults
------------------------------------------------+------------------------
Reporter: berycz | Owner: nobody
Type: Cleanup/optimization | Status: new
Component: Uncategorized | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
------------------------------------------------+------------------------
Hello,
I [https://github.com/django/django/pull/14024 pulled a request on github]
to fix some things in django/views/defaults.py .
I was writing custom views for 400/403/404/500 because I needed them to
return TemplateResponse, so I looked into the default ones for inspiration
and I found some confusing things there:
**1)** the permission_denied() returns
{{{#!python
context={'exception': str(exception)}
}}}
while the page_not_found() uses a nicer
{{{#!python
exception_repr = exception.__class__.__name__
# Try to get an "interesting" exception message, if any (and not the
ugly
# Resolver404 dictionary)
try:
message = exception.args[0]
except (AttributeError, IndexError):
pass
else:
if isinstance(message, str):
exception_repr = message
context = {
'request_path': quote(request.path),
'exception': exception_repr,
}
}}}
I suppose someone just forgot to read the whole code when making some
changes, so it might be better to use the same code to get the exception
message...?
**2)** permission_denied() has in the function description:
{{{
Context: None
}}}
while it should be
{{{
Context:
exception
The message from the exception which triggered the 403 (if one
was
supplied), or the exception class name
}}}
**3)** There is twice this comment about csrf_token, before
page_not_found() and permission_denied()
{{{
# This can be called when CsrfViewMiddleware.process_view has not run,
# therefore need @requires_csrf_token in case the template needs
# {% csrf_token %}.
}}}
But you actually have the decorator ''@requires_csrf_token'' in front of
all the views, so it might kinda confuse people who read that.
Thanks for all the work,
with regards,
Bery
--
Ticket URL: <https://code.djangoproject.com/ticket/32480>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/049.f06d500e70eccce13cbee38b206fab33%40djangoproject.com.