事情是这要的,小弟我发现注册的时候,首先form.validate_on_submit()的值一直为flase,另外在提交表单的时候,提交方式居然是get,而不是post,不知道问题出在哪里,求大神指点迷津,源程序都在下面了
这是forms.py
class SignUpForm(FlaskForm):
user_name = StringField(u'用户名',validators=[Required(u'请填写此字段'),Length(max=15)])
user_email = StringField(u'邮箱',validators=[Required(u'请填写此字段'),Email()])
submit = SubmitField(u'注册')
这是views.py
@app.route('/sign-up',methods=['GET','POST'])
def sign_up():
form = SignUpForm()
if request.method == 'POST':
if form.validate_on_submit():
user = User()
user_name = request.form.get('user_name')
user_email = request.form.get('user_email')
register_check = User.query.filter(db.or_(
User.nickname==user_name,User.email==user_email)).first()
if register_check:
flash("error:The user's name or email alraedy exists!")
return redirect('/sign-up')
if len(user_name) and len(user_email):
user.nickname = user_name
user.email = user_email
user.role = ROLE_USER
try:
db.session.add(user)
db.session.commit()
except:
flash("The Database error!")
return redirect('/sign-up')
flash("Sign up successful!")
return redirect('/index')
return render_template(
'sign_up.html',
title = 'Sign Up',
form = form)
这是sign-up.html
<form action="/sign-up",method="post",name="sign_up">
{{form.hidden_tag()}}
<legend>Please sign up:</legend>
<p>
Nick name:<br>
{{form.user_name}}
{%for error in form.errors.user_name%}
<span style="color:red;">[-]{{error}}</span>
{%endfor%}<br>
</p>
<p>
E-mail:<br>
{{form.user_email}}
{%for error in form.errors.user_email%}
<span style="color:red;">[-]{{error}}</span>
{%endfor%}<br>
</p>
<p>{{form.submit}}</p>
</form>