views:

89

answers:

1

I have a middleware that checks a session value and redirects depending that value. My problem is, it is creating an infinite redirect loop and I'm not sure why.

So, what I want to do is check to see if the value of the session visible is yes and if not redirect the user to my test view.

Here is my middleware:

class CheckStatus(object):  

    def process_request(self, request):    
        if request.user.is_authenticated():                

                s = request.session.get('visible')
                if str(s) is not 'yes':
                    return HttpResponseRedirect(reverse("myapp.myview.views.test"))
+1  A: 

You should at least avoid having it run when serving some media files:

from django.conf import settings

class CheckStatus(object):  

    def process_request(self, request):    
        if request.user.is_authenticated():                
           if not request.path.startswith(settings.MEDIA_URL):
                s = request.session.get('visible')
                if str(s) is not 'yes':
                    return HttpResponseRedirect(reverse("myapp.myview.views.test"))

But the more descent way seems to be using the process_view-method!

lazerscience
interestingly enough I tried the proccess view thinking the same thing, but it still gets called for every media file that gets loaded.
bababa
on the development server a view gets called for every media request, you need to exclude this in `process_view` as well!
lazerscience