#28550 closed Bug (fixed)
auth's login/logout() views drop options passed as args rather the kwargs
Reported by: | Clayton Daley | Owned by: | Zach Liu |
---|---|---|---|
Component: | contrib.auth | Version: | 1.11 |
Severity: | Release blocker | Keywords: | |
Cc: | Zach Liu | Triage Stage: | Accepted |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | yes | UI/UX: | no |
Description (last modified by )
I'm using django-userena which passes a custom template name into
from django.contrib.auth.views import logout as Signout .... return Signout(request, next_page, template_name, *args, **kwargs)
By the time this call is converted to a view, the template_name reverts to the default (registration/logged_out.html
). If I convert the arg to a kwarg (in userena
), the call works correctly so the issue seems to be the way the view is constructed (in contrib.auth.views.logout()
:
return LogoutView.as_view(**kwargs)(request, *args, **kwargs)`
Since template_name
is passed as an arg, it isn't included in the call to as_view()
that actually sets attributes (including template_name
. Before making this call, I suspect the logout()
function should convert template_name (and possibly other args) into kwargs.
Change History (8)
comment:1 by , 7 years ago
Severity: | Normal → Release blocker |
---|---|
Summary: | LogoutView loses template_name → auth's login/logout() views drop options passed as args rather the kwargs |
Triage Stage: | Unreviewed → Accepted |
Type: | Uncategorized → Bug |
comment:2 by , 7 years ago
Description: | modified (diff) |
---|
comment:3 by , 7 years ago
Cc: | added |
---|---|
Owner: | changed from | to
Status: | new → assigned |
comment:4 by , 7 years ago
I understand that template_name (along with authentication_form, redirect_field_name, redirect_authenticated_user, extra_context) need to be included in **kwargs
that is passed to as_view()
, not sure about others in *arg
.
It seems that as_view(**kwargs)
will raise Error if a key in kwargs is not in class attributes of the view class. So I guess I need only find those arguments and add them to kwargs in LogoutView.as_view()?
Also if it happens to logout(), it should happen to login() too, right?
comment:5 by , 7 years ago
Some names may need to be transformed. For example, authentication_form
becomes form_class
. It looks like the other login()
args have matching attributes in LoginView
.
Regression in 78963495d0caadb77eb97ccf319ef0ba3b204fb5.