1

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

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

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

4

2 回答 2

0

这将解决您的直接问题:

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

但这很hacky。可能有更好的方法,但这取决于您要完成的工作- IOW,您要测试的条件是什么?

于 2013-08-31T21:45:31.230 回答
0

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

我放了一个排除案例以使其脱离循环并且一切正常

于 2013-09-01T17:09:55.763 回答