2

我使用 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>

有人可以阐明这个问题吗?

4

1 回答 1

0

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

于 2017-01-14T00:20:59.787 回答