提交表单时页面未重定向

时间:2019-10-01 15:23:40

标签: python flask python-3.7

我正在创建一个博客应用程序。我使用要求详细信息的post方法创建了一个注册表。在烧瓶路线中,我试图检查我的表格是否正确验证。为了实现这一点,我创建了一个if语句,当条件为true时,我试图重定向到本地路由。这没有发生。我不确定这是什么问题。但我可以看到该帖子给出了200个状态代码。

我尝试打印某些内容,但没有打印任何内容。我尝试从html文件中删除该方法,并尝试重做注册路由。我的猜测是验证本身并未发生。

[10000000, 10000001, ..., 01111110, 01111111]
#home route
@app.route('/')
@app.route('/home')
def home():
    return render_template('home.html', posts=posts, title="Home")

# register route
@app.route('/register', methods=['GET', 'POST'])
def register():
    form = RegistrationForm()
    if form.validate_on_submit():
        #flash(f'Account created for {form.username.data}!', 'success')
        print("Account creation success")
        return redirect(url_for('home'))  # function name for the route.
    return render_template('register.html', title="Register", form=form)
# forms.py file
from flask_wtf import FlaskForm
from  wtforms import StringField,PasswordField, SubmitField, BooleanField
from wtforms.validators import DataRequired,length, Email,EqualTo
class RegistrationForm(FlaskForm):
    username= StringField('Username',validators=[
        DataRequired(),
        length(min=2, max=20)
    ])
    email= StringField('Email',validators=[
        DataRequired(), Email()
    ])
    password= PasswordField( 'Password', validators=[DataRequired()])
    confirmPassword = PasswordField('Confirm Password', validators=[DataRequired(),EqualTo(password)])
    submit= SubmitField("Sign Up")
<!--This is layout.html which is parent for the home page-->
       <div class="col-md-8">
            {% with messages = get_flashed_messages(with_categories=true) %}
                {% if messages %}
                    {% for category, message in messages %}
                        <div class="alert alert-{{category}}">
                            {{ message }}
                        </div>
                    {% endfor %}
                {% endif %}
            {% endwith%}
            {% block content %}{% endblock content%}
        </div>

预期输出是页面必须重定向到home.html,但是由于某种原因,它停留在register.html上,并且没有错误消息。我什至会得到200个状态代码,用于发布操作。

1 个答案:

答案 0 :(得分:0)

发布表单后,它有错误:

{'confirmPassword': ["Invalid field name '<UnboundField(PasswordField, ('Password',), {'validators': [<wtforms.validators.DataRequired object at 0x7fecdc7b6e80>]})>'."]}

这是因为您将password字段实例传递给EqualTo验证程序,而不是其名称作为字符串:'password'

confirmPassword = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])