使用 FormView django 在 form_valid 中呈现模板而不是 success_url

Render a template instead a success_url in form_valid with FormView django

正如标题所说:我需要在提交表单后渲染一个模板,这个表单是用FormView和方法form_valid处理的。使用方法 post,我可以在提交模板后渲染它,但也许使用 form_valid,我可以以最干净的方式完成它。

我该怎么做?

form_valid的默认实现是重定向到success_url,你只需要覆盖它来渲染一些页面。这是例子。

class ChangePasswordPage(FormView):
    template_name = 'core/password-change.html'
    form_class = PasswordChangeForm

    def form_valid(self, form):
        form.save()
        messages.success(self.request, "Your password is changed")
        return render(self.request, 'core/password-change-success.html', self.get_context_data())