Class 基于视图 - 基于表单字段的条件重定向
Class Based View - conditional redirect based on form field
当用户在视图中填写第一个表单(说明他们是否有在线帐户)并单击提交时,我想将用户重定向到不同的页面(和不同的表单)。
我已经通过下面的方法进行了尝试,但我发现 SupplyTypeForm 没有属性 cleaned_data
class ServiceTypeView(FormView):
form_class = SupplyTypeForm
template_name = "supplier.html"
success_url = '/'
def post(self, request, *args, **kwargs):
super()
online_account = self.form_class.cleaned_data['online_account']
if online_account:
redirect('../online')
else:
redirect('../offline')
您应该在 form_valid
方法中执行此逻辑,该方法接收表单作为参数。请注意,您需要 return 渲染调用的值,而您对 super()
的调用本身没有任何作用;您必须在该对象上引用一个方法。
def form_valid(self, form):
super().form_valid(form)
online_account = form.cleaned_data['online_account']
if online_account:
return render(request, "supplier_online.html")
else:
return render(request, 'supplier_offline.html')
当用户在视图中填写第一个表单(说明他们是否有在线帐户)并单击提交时,我想将用户重定向到不同的页面(和不同的表单)。
我已经通过下面的方法进行了尝试,但我发现 SupplyTypeForm 没有属性 cleaned_data
class ServiceTypeView(FormView):
form_class = SupplyTypeForm
template_name = "supplier.html"
success_url = '/'
def post(self, request, *args, **kwargs):
super()
online_account = self.form_class.cleaned_data['online_account']
if online_account:
redirect('../online')
else:
redirect('../offline')
您应该在 form_valid
方法中执行此逻辑,该方法接收表单作为参数。请注意,您需要 return 渲染调用的值,而您对 super()
的调用本身没有任何作用;您必须在该对象上引用一个方法。
def form_valid(self, form):
super().form_valid(form)
online_account = form.cleaned_data['online_account']
if online_account:
return render(request, "supplier_online.html")
else:
return render(request, 'supplier_offline.html')