Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flask 已忽略Wtforms自定义验证消息_Flask_Flask Wtforms - Fatal编程技术网

Flask 已忽略Wtforms自定义验证消息

Flask 已忽略Wtforms自定义验证消息,flask,flask-wtforms,Flask,Flask Wtforms,我正在用flask构建一个非常简单的注册表单,我想定制DataRequired和Email验证程序的错误消息,但是似乎我的自定义消息被忽略了,默认消息正在打印。下面是我的代码片段 forms.py signup.html 这就是我得到的 ------{} 127.0.0.1 - - [25/Jan/2019 19:08:34] "GET /signup HTTP/1.1" 200 - 127.0.0.1 - - [25/Jan/2019 19:08:34] "GET /static/css/ma

我正在用flask构建一个非常简单的注册表单,我想定制
DataRequired
Email
验证程序的错误消息,但是似乎我的自定义消息被忽略了,默认消息正在打印。下面是我的代码片段

forms.py

signup.html

这就是我得到的

------{}
127.0.0.1 - - [25/Jan/2019 19:08:34] "GET /signup HTTP/1.1" 200 -
127.0.0.1 - - [25/Jan/2019 19:08:34] "GET /static/css/main.css HTTP/1.1" 404 -

那么为什么这些错误没有被添加到
错误中
以及为什么自定义消息没有生效。这些是如何相关的呢

验证程序需要
DataRequired
Email
的自定义验证消息的原因是,作为浏览器的应用程序客户端正在为这些验证程序使用default消息。覆盖该默认值的方法是将
novalidate
消息附加到
html
表单

这会告诉浏览器停止自己执行表单验证,这样就可以由后端(在本例中为flask)处理表单验证


这是我对我的
signup.html
所做的唯一更改,效果很好。

你能更新你的
signup.html
吗?更新
signup.html
到什么更改?你的意思是我应该发布
signup.html
,好的。哦,对不起,你能将signup.html的内容添加到你的帖子吗?奇怪,我尝试了你的代码,它仍然可以正常工作。好的。我明白了,你看到的信息是默认的HTML5。请参阅此处:您可以阅读此处以禁用它:
{% extends "base.html" %}
{% from "jinja_helpers.html" import render_field %}
{% from "jinja_helpers.html" import render_button %}
{% block body %}
    <div class="container mt-4">
        <form action="" method="POST">
            {{ form.hidden_tag() }}
            {{ render_field(form.username) }}
            {{ render_field(form.email) }}
            {{ render_field(form.password) }}
            {{ render_field(form.confirm_password) }}
            {{ render_button(form.submit) }}
        </form>
        <div class="form-row mt-3">
            <small class="text-muted">Already have an account ? <a href="{{ url_for('login') }}">Log In</a></small>
        </div>
    </div>

{% endblock %}
{% macro render_field(field) %}
    <div class="form-group">
        {{ field.label(class="form-control-label font-weight-bold text-muted") }}
        {% if field.errors %}
            {{ field(class="form-control is-invalid") }}
            <div class="invalid-feedback">
                {% for error in field.errors %}
                    <span>{{ error }}</span>
                {% endfor %}
            </div>
        {% else %}
            {{ field(class="form-control") }}
        {% endif %}


    </div>
{% endmacro %}


{%  macro render_button(button) %}
    {{ button(class="btn btn-dark") }}
{%  endmacro %}
@app.route('/signup', methods=['GET', 'POST'])
def signup():
    form = SignUp()
    print(f'------{form.errors}')
    if form.validate_on_submit():
        username = form.username.data
        password = form.password.data
        user = User(username, password)
        db.session.add(user)
        db.session.commit()
        flash('Account created successfully !', 'success')
        return redirect(url_for("login"))
    return render_template("signup.html", form=form, title='App-Sign Up')
------{}
127.0.0.1 - - [25/Jan/2019 19:08:34] "GET /signup HTTP/1.1" 200 -
127.0.0.1 - - [25/Jan/2019 19:08:34] "GET /static/css/main.css HTTP/1.1" 404 -