我正在使用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
答案 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)