我正在编写自定义middlware,如果满足条件,我想重定向到另一个页面。我的代码如下所示:
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 :(得分:0)
这将解决您的直接问题:
if request.setting or request.path == '/setting/':
但它非常hacky。可能有更好的方法,但这取决于你想要完成什么 - IOW,你正在测试的条件是什么?
答案 1 :(得分:0)
浏览器的实际错误是“重定向循环”。
我提出了一个排除案例,让它脱离循环,一切正常