I'm trying to redirect users to custom url "/gallery/(username)/"
after successfully logging in. It currently redirects to the default "/account/profile/"
url While I know what I can override the redirect url in my settings.py
, my url is dynamic thus it will not work.
Documentation states that I need to use the "next"
parameter and context processors.
I have the {{next}}
in my template, but I'm confused on how to actually pass the "/gallery/(username)"
. Any help would be greatly appreciated.
p.s: I'm trying to steer away from writing my own login view.
The next parameter appears in a URL when a user is trying to get to a page but is redirected to another page first before being able to access that page. This may occur such as when a view requires a login through a login_required decorator.
from django.contrib.auth import authenticate, login def my_view(request): username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) # Redirect to a success page. ... else: # Return an 'invalid ...
Django's login view django.contrib.auth.views.login
accepts a dictionary named extra_context
. The values in the dictionary are directly passed to the template. So you can use that to set the next
parameter. Once that is done, you can set a hidden field with name next
and value {{ next }}
so that it gets rendered in the template.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With