2013-08-31 28 views
1

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

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 

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

+0

你可以显示你的'urls.py'? – alecxe

+0

我添加了我的urls.py – Atma

回答

0

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

我把一个排除案例让它脱离循环,所有工作正常

+0

我正面临同样的问题。你可以举一些例子来说明一个排除案例。 – wrufesh

0

这将解决您的眼前问题:

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

但是它是相当哈克。这可能有更好的办法,但这取决于你想要完成什么 - IOW,你测试的条件是什么?

+0

请求属性实际上是基于用户和付费标志的。我认为不小心将它改了一些。 – Atma