#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 , 8 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 , 8 years ago
| Description: | modified (diff) |
|---|
comment:3 by , 8 years ago
| Cc: | added |
|---|---|
| Owner: | changed from to |
| Status: | new → assigned |
comment:4 by , 8 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 , 8 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.