如何在使用 TemplateView 和 crispy 表单时显示验证错误消息

How to show validation error messages while using TemplateView and crispy forms

如何使用 Crispy Forms return 带有错误消息的表单。我无法使用 FormView,因为我试图将多个模型表单添加到同一个标签。

class Test(TemplateView):
    template_name = 'login.html'

    def get(self, request, *args, **kwargs):
        form = RegistrationForm()
        return render(request, self.template_name, {'form': form})

    def post(self, request, *args, **kwargs):
        form = RegistrationForm(request.POST)

        if form.is_valid():
            print 'valid'
        else:
            form = RegistrationForm()
            print self.get_context_data()

            for x in self.get_context_data():
                print type(x)
            print form.errors

            return render(request, self.template_name,{'form': form})

表单无效时不要创建新表单。它会覆盖包含错误的绑定表单。

如果您删除该行,那么无论您在模板中使用 {{ form }} 还是 crispy 表单,表单都将呈现错误。

def post(self, request, *args, **kwargs):
    form = RegistrationForm(request.POST)
    if form.is_valid():
        # do something with form, then redirect
    else:
        form = RegistrationForm() # remove this line
        return render(request, self.template_name, {'form':form})