【问题标题】:Wagtail FormBuilder - how to use form data in the landing template?Wagtail FormBuilder - 如何在登陆模板中使用表单数据?
【发布时间】:2017-01-28 03:16:27
【问题描述】:

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

问题:

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

【问题讨论】:

    标签: python formbuilder wagtail


    【解决方案1】:

    Wagtail 通过AbstractForm (https://github.com/wagtail/wagtail/blob/master/wagtail/contrib/forms/models.py#L296) 尤其是serve 方法为其表单页面提供服务。此方法检查 HTTP 方法是否为“POST”,因此它要么处理表单并返回登录页面,要么呈现实际表单。您可以将此方法覆盖到您的自定义表单类中,以便更新登录页面的上下文,如下所示:

    def 服务(自我,请求,*args,**kwargs): 如果 request.method == 'POST': form = self.get_form(request.POST, page=self, user=request.user) 如果 form.is_valid(): self.process_form_submission(form) # 用其他数据更新原始着陆页上下文 登陆页面上下文 = self.get_context(请求) login_page_context['name'] = form.cleaned_data['name'] 返回渲染( 要求, self.get_landing_page_template(请求), 登陆页面上下文 ) 别的: form = self.get_form(page=self, user=request.user) 上下文 = self.get_context(请求) 上下文['form'] = 形式 返回渲染( 要求, self.get_template(请求), 语境 )

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

    【讨论】:

      猜你喜欢
      • 2018-12-11
      • 1970-01-01
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多