Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Redirecting to last view after login

I have wrestled with this one for a bit and googled and looked through documentation, so I guess its time to ask. I am trying make my app redirect to the last viewed page after logging in. I am running django 1.2.4 and have had no luck so far.

This Stack Overflow thread seemed like it would do the trick but I have not had success with it: Django: Redirect to previous page after login...

Currently after logging in from any view I am redirected to: //localhost:1100/accounts/profile/

settings.py has this suggested code: "django.core.context_processors.request",

With this as my login button link: <a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">login</a>

I also made sure to import the RequestContext in my views.py file: from django.template import RequestContext

I get the impression this is not working. Also I noticed now login URL has a partial next URL in it: //localhost:1100/accounts/login/?next=

Suggestions? Thanks in advance!

like image 435
bmartinek Avatar asked Jan 20 '23 19:01

bmartinek


1 Answers

As sdolan said, you can use the login_required decorator, but also there are a few more possiblities:

  • Form action:

    <form method="post" action="{% url django.contrib.auth.views.login %}?next={{request.path}}">
    
  • Next hidden field:

     <input type="hidden" name="next" value="{{request.path}}" />
    
  • With a link to the login form:

    <a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">Login</a>
    

For using them, you have to pass the Request Context in the corresponding view. Examples of doing this can be found here: http://lincolnloop.com/blog/2008/may/10/getting-requestcontext-your-templates/

like image 52
anders Avatar answered Jan 23 '23 08:01

anders