我使用Wagtail提供的表单构建器模块在Wagtail Admin中创建一个简单的联系人表单。表单包含动态添加的字段名称,电子邮件,主题和消息;模型ContactPage
继承自AbstractForm
。
问题:
我想在名称字段中使用输入的名称来个性化对使用联系表单的用户的响应消息。 Wagtail的“阅读”“表单”构建器上的“文档”页面仅指出form
是 form_page.html 模板的上下文的一部分,而 form_page_landing.html 模板是标准模板。是否可以通过开箱即用的登陆模板的上下文以某种方式访问表单提交的值?如果没有,是否有人可以举例说明如何/什么页面功能要覆盖,以便将我需要的信息添加到上下文中?谢谢!
答案 0 :(得分:1)
Wagtail通过AbstractForm
(WsSecurity)及其serve
方法为其表单页面提供服务。此方法检查HTTP方法是否为“POST”,以便它处理表单并返回登录页面或呈现实际表单。您可以将此方法覆盖到自定义表单类,以便更新登录页面的上下文,如下所示:
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
上下文变量,其中包含名称表单字段的值!