Python Flask 解决form.validate_on_submit()总是为false的问题

# 表单类:
class Form(FlaskForm):
    username = StringField("用户名:", validators=[DataRequired()])
    phone = IntegerField("手机号:", validators=[DataRequired()])
    email = StringField("邮箱:", validators=[DataRequired(),email("Email ERROR")])
    age = IntegerField("年龄:", validators=[DataRequired()])
    about = TextAreaField("关于我:", validators=[DataRequired()])
    submit = SubmitField("注册")
    password = PasswordField("密码:", validators=[DataRequired()])
    confirm = PasswordField("确定密码:", validators=[DataRequired()])

# 视图函数:
@app.route("/",methods=["GET","POST"])
def index():
    form=Form()
    print(form.validate_on_submit())
    if form.validate_on_submit():
        return redirect(url_for("suc"))
    else:
        return render_template("register2.html",form=form)

@app.route("/suc")
def suc():
    return "SUCCESS"

 HTML代码:

<form method="post">
    <div class="form-group">
        {{ form.username.label }} <br> {{ form.username(class="form-control",placeholder="请输入用户名") }} <br>
    </div>
    <div class="form-group">
        {{ form.password.label }} <br> {{ form.password(class="form-control",placeholder="输入密码") }} <br>
    </div>
    <div class="form-group">
        {{ form.confirm.label }} <br> {{ form.confirm(class="form-control",placeholder="确认密码") }} <br>
    </div>
    <div class="form-group">
        {{ form.phone.label }} <br> {{ form.phone(class="form-control",placeholder="输入手机号") }} <br>
    </div>
    <div class="form-group">
        {{ form.email.label }} <br> {{ form.email(class="form-control",placeholder="输入邮箱") }} <br>
    </div>
    {% for msg in form.email.errors %}
    {{ msg }}
    {% endfor %}
    <div class="form-group">
        {{ form.age.label }} <br> {{ form.age(class="form-control",placeholder="输入年龄") }} <br>
    </div>
    <div class="form-group">
        {{ form.about.label }} <br> {{ form.about(class="form-control",placeholder="输入我的简介") }} <br>
    </div>
    <div class="form-group">
        {{ form.submit(class="btn btn-default") }}
    </div>
</form>

我只用email一项进行测试。

这样呢form.validate_on_submit()返回的都是false,将表单类中含有中文字符串改成unicode字符解决中文编码问题

# 表单类:
class Form(FlaskForm):
    username = StringField(u"用户名:", validators=[DataRequired()])
    phone = IntegerField(u"手机号:", validators=[DataRequired()])
    email = StringField(u"邮箱:", validators=[DataRequired(),email("Email ERROR")])
    age = IntegerField(u"年龄:", validators=[DataRequired()])
    about = TextAreaField(u"关于我:", validators=[DataRequired()])
    submit = SubmitField(u"注册")
    password = PasswordField(u"密码:", validators=[DataRequired()])
    confirm = PasswordField(u"确定密码:", validators=[DataRequired()])

然后再把HTML代码中form标签里面加入{{ form.hidden_tag() }},这样form.validate_on_submit()才能起作用(我也不知道为啥要加。。)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值