首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在提交时验证水瓶表格?

如何在提交时验证水瓶表格?
EN

Stack Overflow用户
提问于 2018-04-05 13:25:08
回答 1查看 2K关注 0票数 3

我已经生成了一个酒瓶表单,在我的CRUD应用程序中注册一个新用户。但是,即使在填充了所有数据字段之后,Flask表单也会显示错误。我甚至在HTML代码中包含了{{ form.hidden_tag() }}。而且,这种不正常的行为突然开始了。当我增加2个新用户时,它在前两次很好地工作了。

下面是我使用的代码- routes.py

代码语言:javascript
复制
@app.route("/register", methods=['GET','POST'])
def register():
    if current_user.is_authenticated:
        return redirect(url_for('index'))
    form = RegistrationForm()
    regpass=app.config['REGISTRATION_KEY']
    if form.validate_on_submit():
        if form.passkey.data==regpass:
            user = User(username=form.username.data, email=form.email.data)
            user.set_password(form.password.data)
            db.session.add(user)
            db.session.commit()
            flash('Congratulations, you are now a registered user!')
            return redirect(url_for('login'))
        flash('Invalid Passkey!')
        return redirect(url_for('register'))
    return render_template('register.html', title='Register', form=form)

forms.py-

代码语言:javascript
复制
class RegistrationForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    email = StringField('Email', validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])
    password2 = PasswordField(
        'Repeat Password', validators=[DataRequired(), EqualTo('password')])
    passkey = PasswordField('Pass Key', validators=[DataRequired()])
    submit = SubmitField('Register')

    def validate_username(self, username):
        user = User.query.filter_by(username=username.data).first()
        if user is not None:
            raise ValidationError('Please use a different username.')

    def validate_email(self, email):
        user = User.query.filter_by(email=email.data).first()
        if user is not None:
            raise ValidationError('Please use a different email address.')

config.py -

代码语言:javascript
复制
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config(object):
    SECRET_KEY = os.environ.get('SECRET_KEY')
    REGISTRATION_KEY=os.environ.get('REGISTRATION_KEY')

HTML -

代码语言:javascript
复制
{% extends "base.html" %}

{% block content %}
<br><hr>
<div class="container">
    <div class="row">
        <div class="col-md-12">
            <h1 id="signin">
                Register!
            </h1>
            <hr>
        </div> 
    </div>
    <form action="" method="post">
    {{ form.hidden_tag() }}
    <div class="row" id="form">
        <div class="col-md-12">
            {{ form.username.label }}<br>
            {{ form.username(size=32 , class_='form-fields') }}<br>
            {% for error in form.username.errors %}
            <span style="color: red;">[{{ error }}]</span>
            {% endfor %}
            <br>
            {{ form.email.label }}<br>
            {{ form.email(size=64, class_='form-fields') }}<br>
            {% for error in form.email.errors %}
            <span style="color: red;">[{{ error }}]</span>
            {% endfor %}
            <br>
            {{ form.password.label }}<br>
            {{ form.password(size=32, class_='form-fields') }}<br>
            {% for error in form.password.errors %}
            <span style="color: red;">[{{ error }}]</span>
            {% endfor %}
            <br>
            {{ form.passkey.label }}<br>
            {{ form.passkey(size=32, class_='form-fields') }}<br>
            {% for error in form.password2.errors %}
            <span style="color: red;">[{{ error }}]</span>
            {% endfor %}
            <br>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <span id='submit-field'><p >{{ form.submit(class_='submit-button-login') }}</p></span>
        </div>
    </div>
    </form>
</div>

{% endblock %}

如您所见,REGISTRATION_KEY在config.py文件中。在启动烧瓶应用程序之前,我在终端中设置了REGISTRATION_KEY

这是显示错误的图像。

谢谢和问候。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-05 13:56:05

在您的password2表单中,您已经设置了所需的表单字段,但是在html中,您没有声明表单标记,因此出现了错误。添加{{ form.password2...将解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49673546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档