Wagtail FormBuilder - 如何在登陆模板中使用表单数据?
Wagtail FormBuilder - how to use form data in the landing template?
我使用 Wagtail 提供的表单生成器模块在 Wagtail Admin 中创建了一个简单的联系人表单。该表单具有动态添加的字段 Name、Email、Subject 和 Message;模型 ContactPage
继承自 AbstractForm
.
问题:
我想使用在 姓名 字段中输入的姓名来个性化对使用联系表的用户的回复消息。 Wagtail 的 Read The Docs on Form builder 页面仅声明 form
是 form_page.html 模板上下文的一部分,而 form_page_landing.html模板是标准模板。是否可以通过开箱即用的着陆模板上下文访问表单提交的值?如果没有,任何人都可以举一个例子 how/what 页面函数来覆盖,以便将我需要的信息添加到上下文中吗?谢谢!
Wagtail 通过 AbstractForm
(https://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
上下文变量,其中包含名称表单字段的值!
我使用 Wagtail 提供的表单生成器模块在 Wagtail Admin 中创建了一个简单的联系人表单。该表单具有动态添加的字段 Name、Email、Subject 和 Message;模型 ContactPage
继承自 AbstractForm
.
问题:
我想使用在 姓名 字段中输入的姓名来个性化对使用联系表的用户的回复消息。 Wagtail 的 Read The Docs on Form builder 页面仅声明 form
是 form_page.html 模板上下文的一部分,而 form_page_landing.html模板是标准模板。是否可以通过开箱即用的着陆模板上下文访问表单提交的值?如果没有,任何人都可以举一个例子 how/what 页面函数来覆盖,以便将我需要的信息添加到上下文中吗?谢谢!
Wagtail 通过 AbstractForm
(https://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
上下文变量,其中包含名称表单字段的值!