Django从视图内部重定向

时间:2017-12-06 09:42:15

标签: python django redirect django-views

我正在使用django 1.11.8。

我需要对请求的视图执行一些检查,并在其中将用户重定向到另一个Http页面,但此代码失败,因为重定向被忽略。

我错过了什么?

class ThisCreateView(CreateView):

    def get_form_kwargs(self):
         if self.kwargs['x'] == 1:
              return redirect(reverse('this_app:this_list'))
         return kwargs

2 个答案:

答案 0 :(得分:1)

您无法从get_form_kwargs方法返回重定向。它的工作是为表单返回一个kwargs字典。

您可以将此检查移至dispatch方法。

def dispatch(self, request, *args, **kwargs):
     if kwargs['x'] == 1:
          # note you don't need to call reverse when you use redirect
          return redirect('this_app:this_list')
     return super(ThisCreateView, self).dispatch(*args, **kwargs)

答案 1 :(得分:0)

@Alasdair的解决方案对我来说非常有效,尽管有一点点变化:

return super(ThisCreateView, self).dispatch(request, *args, **kwargs)