【问题标题】:How to do email and phone validation in wagtail如何在 wagtail 中进行电子邮件和电话验证
【发布时间】:2021-12-17 07:19:48
【问题描述】:

models.py

class PartnerFormField(AbstractFormField):
    page = ParentalKey(
        'PartnerPage',
        on_delete=models.CASCADE,
        related_name='form_fields',
    )


class PartnerPage(AbstractEmailForm):

    template = "resources/partner_form.html"
    # This is the default path.
    # If ignored, Wagtail adds _landing.html to your template name
    landing_page_template = "resources/partner_form_thankyou.html"

    intro = RichTextField(blank=True)
    thank_you_text = RichTextField(blank=True)

    content_panels = AbstractEmailForm.content_panels + [
        FieldPanel('intro'),
        InlinePanel('form_fields', label='Form Fields'),
        FieldPanel('thank_you_text'),
        MultiFieldPanel([
            FieldRowPanel([
                FieldPanel('from_address', classname="col6"),
                FieldPanel('to_address', classname="col6"),
            ]),
            FieldPanel("subject"),
        ], heading="Email Settings"),
    ]  
    def get_form_fields(self):
        return self.custom_form_fields.all()

partnerform.html

<section class="partner-form">
  <div class="container">
    <div class="row justify-content-center">
      <div class="col-12">
        <h2 class="text-center font-weight-bolder">Become a <span style=" color: #f98439;">Domitos</span> partner now!</h2>
      </div>
      <div class="col-lg-5 col-12 mt-4">
        <div class="card p-5 shadow">
          <form id="partnerForm" action="{% pageurl page %}" method="POST">
            <div class="form-group">
                {% csrf_token %}
                                        
                {% for field in form %}
                <div class="form-group">
                  {{ field.label_tag }}
                  {% render_field field class+="form-control" placeholder+=field.help_text %}
                 
                </div>
              {% endfor %}
            <div class="form-group mx-4 mt-4 mb-0">
              <button type="submit" class="btn text-white w-100 p-3">SUBMIT</button>
            </div>
          </form>
        </div>
      </div>
    </div>
  </div>
</section>

如何在 html 中验证电子邮件和电话。 当我在电子邮件中输入内容时,它不应该提交我想显示输入有效的电子邮件地址和有效的电话号码 如何在鹡鸰中做到这一点,请帮我解决这个问题 提前致谢

【问题讨论】:

    标签: django wagtail


    【解决方案1】:

    使用 RegexValidator 对象,这是我编写的用于验证 timeZone 条目的示例:

        timezone = models.TextField(
            max_length=25,
            help_text="Examples: US/Pacific, America/Los_Angeles, Etc/UTC",
            default='Etc/UTC',
            validators=[
                RegexValidator(
                    regex = r'^(\w+\/?\w+)$',
                    message ='Examples: US/Pacific, America/Los_Angeles, Etc/UTC',
                    code='invalid_tz'
                )
            ]
        )
    

    您可以在 models.py 的 regex= 行中插入格式化代码,例如 these examples。电子邮件可能有点棘手。请参考this article 获取示例和可能的陷阱。

    【讨论】:

    • 在models.py中我做了wagtail表单字段没有做单独的表单字段然后如何在模型中做到这一点..请帮助
    • 我读到这个:docs.wagtail.io/en/stable/reference/contrib/forms/… 意味着如果你想对单个字段进行验证,你需要使用单独的表单字段:“wagtailforms 不是 Django 表单支持的替代品。它被设计为一种方式页面作者无需编写代码即可构建通用数据收集表单。
    • 上篇文章建议也看github.com/gasman/wagtail-form-example;也许这可以让您深入了解如何分解字段以执行验证。当然,可以在 POST 之后检查整个表单的 .isvalid,但我很确定您正在寻找更多的“响应式 UI”...
    • 好的,谢谢..如何在 wagtail 中做单独的表单字段,请帮助
    • 另一个可以查看的链接:docs.wagtail.io/en/stable/reference/contrib/forms/…(您可能已经围绕这些示例设计了您的页面)。
    猜你喜欢
    • 2021-08-07
    • 2020-03-24
    • 2013-11-07
    • 2015-03-15
    • 2020-04-05
    • 2011-03-21
    • 2018-05-05
    • 1970-01-01
    相关资源
    最近更新 更多