使用 Flask-WTF 验证表单

问题描述 投票:0回答:1

我是 Python 的新手,目前正在使用 Flask WTForms。

我创建了一个用户登录页面,如下所示:

如图所示,“注册”按钮被推到一边,为红色通知留出空间。

但是,我希望通知出现在框的侧面,如下图所示:

我该怎么做?

这是我的代码:

class LoginForm(FlaskForm):
    user_email = EmailField(label='Email', validators=[DataRequired()])
    user_password = PasswordField('Password', [
        validators.DataRequired(message='Password is required.'),
        validators.Length(message='Password must be at least 8 characters long.', min=8)
    ])
    submit = SubmitField(label='Sign Up')
@app.route("/login", methods=['GET', 'POST'])
def login():
    login_form = LoginForm()
    login_form.validate_on_submit()
    return render_template('login.html', form=login_form)

下面是login.html文件

<!DOCTYPE HTML>

<html>
    <head>
        <title>Login</title>
    </head>
    <body>
        <div class="container">
        <h1>Login</h1>
        <form method="POST" action="{{url_for('login')}}" novalidate>
            {{ form.csrf_token }}
            <p>{{ form.user_email.label }} <br> {{ form.user_email(size=30) }}</p>
            {% if form.user_email.errors %}
                <ul class="errors">{% for error in form.user_email.errors %}</ul>
                        <span style="color:red" >{{ error}}</span>
                    {% endfor %}
            {% endif %}
            <p>{{ form.user_password.label }} <br> {{ form.user_password(size=30) }}</p>
            {% if form.user_password.errors %}
                <ul class="errors">{% for error in form.user_password.errors %}</ul>
                    <span style="color:red" >{{ error}}</span>
                {% endfor %}
            {% endif %}
            {{form.submit}}
        </form>
        </div>
    </body>
</html>
python flask flask-wtforms flask-login
1个回答
0
投票

将您的

login.html
表格更改为如下内容:

<form method="POST" action="{{url_for('login')}}" novalidate>
    {{ form.csrf_token }}
    <p>
        {{ form.user_email.label }} <br>
        {{ form.user_email(size=30) }}
        {% if form.user_email.errors %}
            <span style="color:red" >{{ form.user_email.errors | join(',') }}</span>
        {% endif %}
    </p>
    
    <p>
        {{ form.user_password.label }} <br>
        {{ form.user_password(size=30) }}
        {% if form.user_password.errors %}
            <span style="color:red" >{{ form.user_password.errors | join(',') }}</span>
        {% endif %}
    </p>
    {{form.submit}}
</form>

错误

span
现在在
p
内,因此将内联显示。我没有遍历错误,而是使用
join
过滤器用逗号连接它们。

© www.soinside.com 2019 - 2024. All rights reserved.