Flask-wtf错误消息未正确显示

时间:2020-08-13 20:35:00

标签: flask flask-wtforms

我创建的表单的错误消息没有以我放置的引导样式出现。 这是form.py代码:

class SearchForm(FlaskForm):
    search = StringField('Número do protocolo', validators=[DataRequired()])
    submit = SubmitField('Buscar')

这是.html代码:

{% extends "base.html" %}
{% block sub_content %}
<br><br>
<form method="POST" action="">
    {{ form.hidden_tag() }}
    <fieldset class="form-group">
        <legend class="border-bottom mb-4">Veja o andamento da sua denúncia</legend>
        <div class="form-group">
            {{ form.search.label(class="form-control-label") }}
            
            {% if form.search.errors %}
                {{ form.search(class="form-control is-invalid") }}
                <div class="invalid-feedback">
                    {% for error in form.search.errors %}
                        <span>{{ error }}</span>
                    {% endfor %}
                </div>
            {% else %}
                {{ form.search(class="form-control") }}
            {% endif %}
            
            
        </div>
    </fieldset>
    <div class="form-group">
        {{ form.submit(class="btn btn-secondary") }}
        <a href="/client1/"><input type="button" value="Voltar" class="btn btn-secondary"></a>
    </div>
</form>
{% endblock %}

即使html代码具有如下所示的错误样式:

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

它在下图中不断显示随机错误消息:

error message

1 个答案:

答案 0 :(得分:0)

解决方案非常简单,您只需向表单添加“ novalidate”标签。您的代码没有错。

这是因为浏览器正在响应瓶状表单之前就做出了响应,并且实际上未呈现任何“错误”。

因此,HTML表单如下所示:

 <!-- Note the 'validate' tag -->
    <form method="POST" action="" novalidate>
            {{ form.hidden_tag() }}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Veja o andamento da sua denúncia</legend>
                <div class="form-group">
                    {{ form.search.label(class="form-control-label") }}
                    
                    {% if form.search.errors %}
                        {{ form.search(class="form-control is-invalid") }}
                        <div class="invalid-feedback">
                            {% for error in form.search.errors %}
                                <span>{{ error }}</span>
                            {% endfor %}
                        </div>
                    {% else %}
                        {{ form.search(class="form-control") }}
                    {% endif %}
                    
                    
                </div>
            </fieldset>
            <div class="form-group">
                {{ form.submit(class="btn btn-secondary") }}
                <a href="/client1/"><input type="button" value="Voltar" class="btn btn-secondary"></a>
            </div>
        </form>

参考

否验证标签----> w3school

指南 -----> Miguel Grinberg