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')