[英]Flask-WTF form doesn't have attribute 'validate_on_submit'
提交时,我正在使用Flask-WTF验证表单。 我正在使用form.validate_on_submit()
,但是出现以下错误:
AttributeError: 'PickASong' object has no attribute 'validate_on_submit'
为什么会出现此错误,该如何解决?
import flask
from flask import Flask
from flask import render_template
from flask import Flask
from flask import request
from flask import render_template
from flask import redirect
from flask.ext.wtf import Form
from wtforms import *
from wtforms import StringField, BooleanField
from wtforms.validators import DataRequired
from flask.ext.wtf import Form
from wtforms import Form, TextField, BooleanField, PasswordField, TextAreaField, validators
class PickASong(Form):
song = TextField(u'Song title', validators=[DataRequired()])
class PickAnumber(Form):
songNumber = IntegerField(u'Please select song number', validators=[DataRequired()])
app = Flask(__name__)
@app.route("/",methods=["POST","GET"])
def hello():
form = PickASong(csrf_enabled=False)
if form.validate_on_submit():
user = form.song.data
print user
d=str(user)
print d
# search(d)
cmd = "python Search.py --q \"" + d +'"'
os.system(cmd)
return redirect('/2')
return render_template('searchtwo.html', form=form)
您from flask.ext.wtf import Form
,然后from wtforms import *
,后者包括基本WTForms Form
。 因此,名称Form
绑定到它的最后一个对象wtforms.Form
。 这就是您避免import *
的原因。 一个快速的解决方法是from wtforms import *
下面的from flask_wtf import Form
中from wtforms import *
。 正确的解决方法是仅导入您需要的内容,而不导入所有内容。 如果您需要两种形式,请为一个导入别名,以免名称冲突: from flask_wtf import Form as FlaskForm
。
您已经在顶部的大导入块下面多余地写入了以下导入。
from flask.ext.wtf import Form
from wtforms import Form, TextField, BooleanField, PasswordField, TextAreaField, validators
只需不从wtforms
导入Form
或反转两行即可立即修复。
from flask.ext.wtf import Form
from wtforms import TextField, BooleanField, PasswordField, TextAreaField, validators
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.