我使用 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>
有人可以阐明这个问题吗?