Opened 12 years ago
Closed 12 years ago
#19551 closed New feature (duplicate)
Enable dynamic redirect after login, by setting LOGIN_REDIRECT_URL to a callable
Reported by: | Chris Wilson | Owned by: | nobody |
---|---|---|---|
Component: | contrib.auth | Version: | |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
It's quite a common requirement to redirect to a different page after login, for example depending on some information about the user, or the time of day, etc:
- http://stackoverflow.com/questions/1608261/django-login-redirect-url-with-dynamic-value
- http://stackoverflow.com/questions/3842075/conditional-login-redirect-in-django?rq=1
This involves:
- either rewriting the login() view, which may be a security risk, as it's easy to get wrong, and definitely not DRY;
- or doing a second redirect from the landing page after login which is inefficient and slow.
I think it would be a very simple change to allow LOGIN_REDIRECT_URL
to point to a callable, in django.contrib.auth.views.login
:
if not redirect_to: redirect_to = settings.LOGIN_REDIRECT_URL + if callable(redirect_to): + redirect_to = redirect_to(request, form.get_user())
Note:
See TracTickets
for help on using tickets.
I think the way to go is to transform the auth views in class-based views, then it will be easy to subclass and rewrite
get_success_url
. This is tracked in #17209.