提交表格后如何使用Flask从Recaptcha正确获取错误消息

时间:2019-04-17 16:13:52

标签: flask recaptcha

我正在使用flask-recaptcha创建一个包含reCAPTCHA v2的表单,当用户单击提交按钮而不检查reCAPTCHA时,我遇到一些问题来获取错误消息。它最初不应该显示错误消息,但是在提交时没有reCAPTCHA时,现在应该出现一条消息。验证表单的常见功能。

在学习烧瓶时,我以本教程为例(https://github.com/CoreyMSchafer/code_snippets/tree/master/Python/Flask_Blog/03-Forms-and-Validation)。

通常对于其他字段(例如用户名),使用以下代码:

  {% if form.username.errors %}
     {{ form.username(class="form-control form-control-lg is-invalid") }}
     <div class="invalid-feedback">
      {% for error in form.username.errors %}
          <span>{{ error }}</span>
      {% endfor %}
     </div>
  {% else %}
     {{ form.username(class="form-control form-control-lg") }}
  {% endif %}

基于同样的想法,我希望有一个与前一种情况类似的内容,即在尝试提交而不检查recapcha后,仅在发生错误时显示错误消息。显然,以下代码不起作用

{% if form.recaptcha.errors %}
     {{ form.repactha }}
     <div>
      {% for error in form.recaptcha.errors %}
          <span>{{ error }}</span>
      {% endfor %}
     </div>
  {% else %}
     {{ form.recaptcha }}
  {% endif %},

我现在所拥有的解决方法非常丑陋,如下所示

<div>
       {% if not form.recaptcha.verify %}
         {{ form.recaptcha }}
            <div>
              <span>Please, don\'t forget to click on the captcha</span>
            </div>
       {% else %}
         {{ form.recaptcha }}
       {% endif %}
</div>

这种方法的问题是,消息总是在重新验证无效时出现(即使在第一次执行时)。

我该如何改善呢?

0 个答案:

没有答案