Django中间件重定向无限循环

1 投票
1 回答
6755 浏览
提问于 2025-04-16 03:33

我有一个中间件,它会检查一个会话值,然后根据这个值进行重定向。我的问题是,它现在出现了无限重定向循环,我不知道为什么会这样。

我想做的是检查会话中的某个值是否为“yes”,如果不是,就把用户重定向到我的测试页面。

下面是我的中间件代码:

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 个回答

3

你至少应该避免在提供一些媒体文件时让它运行:

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"))

不过,更好的方法似乎是使用process_view方法

撰写回答