我正在创建一个博客应用程序。我使用要求详细信息的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个状态代码,用于发布操作。
答案 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')])