django中间件重定向不呈现页面

时间:2013-08-31 21:34:18

标签: django django-views django-urls django-middleware

我正在编写自定义middlware,如果满足条件,我想重定向到另一个页面。我的代码如下所示:

class SettingHandler(object):  

    def process_view(self, request, view_func, view_args, view_kwargs): 
        if request.user.paid: 
            return view_func(request, *view_args, **view_kwargs)

        else:
            return HttpResponseRedirect(reverse('setting')) 

我的urls.py看起来像这样:

url(r'^setting/$', 'customers.settings', name='setting'),

达到重定向条件时,页面不会呈现。控制台中的输出如下所示:

"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0
"GET /setting/ HTTP/1.1" 302 0

如何重定向到所需的页面?

2 个答案:

答案 0 :(得分:0)

这将解决您的直接问题:

if request.setting or request.path == '/setting/':

但它非常hacky。可能有更好的方法,但这取决于你想要完成什么 - IOW,你正在测试的条件是什么?

答案 1 :(得分:0)

浏览器的实际错误是“重定向循环”。

我提出了一个排除案例,让它脱离循环,一切正常