2013-08-31 3 views
1

Я пишу пользовательскую среднюю программу, которую я хочу перенаправить на другую страницу, если условие выполнено. Мой код выглядит следующим образом:django middleware redirect не отображает страницу

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/': 

Но это довольно Hacky. Вероятно, есть лучший способ, но это будет зависеть от того, что вы пытаетесь выполнить - IOW, каково условие, которое вы тестируете?

+0

атрибут запроса фактически основан на пользователе и платный флаг. Я думаю, что случайно назвав его, ситуация изменилась немного. – Atma