【问题标题】:Wagtail Form not validating when submitted empty提交为空时,Wagtail 表单未验证
【发布时间】:2016-09-23 14:59:11
【问题描述】:

我使用 Wagtail 表单生成器创建了一个“订阅”表单,其中包含一个必填的电子邮件字段,我还创建了一个模板标签,以便在网站的不同位置使用此表单。

问题:

如果用户使用不完整的电子邮件地址提交表单,我将收到验证错误(这是预期的)。但是,如果用户在没有提供电子邮件地址的情况下提交表单,wagtail 会将用户发送到实际的表单 url 并提示用户再次填写表单。

行为应该是,如果在没有电子邮件地址的情况下提交表单,则也应该触发验证错误,这不会发生。

这里是表格模型代码:

class FormField(AbstractFormField):
    page = ParentalKey('SubscribeForm', related_name='form_fields')

class SubscribeForm(AbstractEmailForm):
    intro = RichTextField(blank=True)
    thank_you_text = RichTextField(blank=True)

    content_panels = AbstractEmailForm.content_panels + [
        FieldPanel('intro', classname="full"),
        InlinePanel('form_fields', label="Form fields"),
        FieldPanel('thank_you_text', classname="full"),
        MultiFieldPanel([
            FieldPanel('to_address', classname="full"),
            FieldPanel('from_address', classname="full"),
            FieldPanel('subject', classname="full"),
        ], "Email")
    ]

这是自定义模板标签代码:

from django import template
from home.models import *

register = template.Library()

# Subscribe

@register.inclusion_tag('home/subscribe_form.html', takes_context=True)
def vdecristo_subscribe(context):

    page = SubscribeForm.objects.get(slug='subscribase')
    return {
        'request': context['request'],
        'page': page,
        'form': page.get_form(),
    }

这里是html代码:

{% load wagtailcore_tags  vdecristo_tags %}

<!-- Callout Subscribe Form Green -->


        <div class="shop-subscribe bg-color-green margin-bottom-40">
            <div class="container">
                    <div class="row">
                        <div class="col-md-8 md-margin-bottom-20">
                                <h2>Subscribase para mantenerse<strong> informado</strong></h2>
                        </div>

                    <form action="{% pageurl page %}" method="POST">
                        {% csrf_token %}

                        <div class="col-md-4">
                                <div class="input-group">

                            <input id="id_subscribase" class="form-control" placeholder="Correo Electronico..." name="subscribase"
                                 type="email">
                            <span class="input-group-btn">
                                <button class="btn" type="submit"><i class="fa fa-envelope-o"></i></button>
                            </span>


                     </form>


                                </div>


                            </div>
                    </div>
            </div><!--/end container-->
        </div>

有人能解释一下这个问题吗?

【问题讨论】:

    标签: django django-forms django-templates templatetags wagtail


    【解决方案1】:

    如果没有看到您的 views.py 代码,很难知道,但是当视图的 if request.method == 'POST' ... 部分没有收到 request.POST 表单数据时,会发生重新加载空表单的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      • 2012-11-20
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多