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

어떻게하면 원하는 페이지로 리디렉션 할 수 있습니까?

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

을하지만 꽤 해키 :

+0

당신이 당신의'urls.py'을 보여줄 수 괜찮 았는데? – alecxe

+0

나는 나의 urls.py – Atma

답변

0

브라우저에서 실제 오류는 "리디렉션 루프"입니다.

나는 루프에서 그것을 얻을 제외 케이스를 넣어 모든

+0

나는이 같은 문제에 직면하고있다. 제외 사례를 제시 할 수있는 몇 가지 예를 들어 주시겠습니까? – wrufesh

0

이 즉각적인 문제를 해결합니다. 아마도 더 좋은 방법 일 것입니다. 그러나 그것은 당신이 성취하고자하는 것에 달려 있습니다. IOW, 당신이 테스트하는 조건은 무엇입니까?

+0

을 추가했다. 요청 속성은 실제로 사용자와 유료 플래그를 기반으로한다. 우연히 이름을 변경하면 변경된 사항이 설정되는 것 같습니다. – Atma

관련 문제