2013-08-31 51 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