Wagtail FormBuilder - 如何在登陆模板中使用表单数据?

Wagtail FormBuilder - how to use form data in the landing template?

我使用 Wagtail 提供的表单生成器模块在 Wagtail Admin 中创建了一个简单的联系人表单。该表单具有动态添加的字段 NameEmailSubjectMessage;模型 ContactPage 继承自 AbstractForm.

问题:

我想使用在 姓名 字段中输入的姓名来个性化对使用联系表的用户的回复消息。 Wagtail 的 Read The Docs on Form builder 页面仅声明 formform_page.html 模板上下文的一部分,而 form_page_landing.html模板是标准模板。是否可以通过开箱即用的着陆模板上下文访问表单提交的值?如果没有,任何人都可以举一个例子 how/what 页面函数来覆盖,以便将我需要的信息添加到上下文中吗?谢谢!

Wagtail 通过 AbstractFormhttps://github.com/wagtail/wagtail/blob/master/wagtail/contrib/forms/models.py#L296)特别是其 serve 方法为其表单页面提供服务。此方法检查 HTTP 方法是否为 'POST',以便它处理表单和 returns 登录页面或呈现实际表单。您可以将此方法覆盖到您的自定义表单 class,以便它更新登录页面的上下文,如下所示:

   def serve(self, request, *args, **kwargs):
        if request.method == 'POST':
            form = self.get_form(request.POST, page=self, user=request.user)

            if form.is_valid():
                self.process_form_submission(form)
                
                # Update the original landing page context with other data
                landing_page_context = self.get_context(request)
                landing_page_context['name'] = form.cleaned_data['name']

                return render(
                    request,
                    self.get_landing_page_template(request),
                    landing_page_context
                )
        else:
            form = self.get_form(page=self, user=request.user)

        context = self.get_context(request)
        context['form'] = form
        return render(
            request,
            self.get_template(request),
            context
        )

现在着陆页上下文将有一个 name 上下文变量,其中包含名称表单字段的值!