[英]Flask-WTF form doesn't have attribute 'validate_on_submit'
I am using Flask-WTF to validate a form when submitted. 提交时,我正在使用Flask-WTF验证表单。 I am using
form.validate_on_submit()
, but I get the following error: 我正在使用
form.validate_on_submit()
,但是出现以下错误:
AttributeError: 'PickASong' object has no attribute 'validate_on_submit'
Why am I getting this error, and how do I fix it? 为什么会出现此错误,该如何解决?
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)
You imported from flask.ext.wtf import Form
, and then subsequently imported from wtforms import *
, which includes the base WTForms Form
. 您
from flask.ext.wtf import Form
,然后from wtforms import *
,后者包括基本WTForms Form
。 So the name Form
refers to the last object bound to it, wtforms.Form
. 因此,名称
Form
绑定到它的最后一个对象wtforms.Form
。 This is the reason you avoid import *
. 这就是您避免
import *
的原因。 A quick fix is to move from flask_wtf import Form
below from wtforms import *
. 一个快速的解决方法是
from wtforms import *
下面的from flask_wtf import Form
中from wtforms import *
。 The correct fix is to import only what you need, rather than everything. 正确的解决方法是仅导入您需要的内容,而不导入所有内容。 If you need both forms, alias one import so the names don't conflict:
from flask_wtf import Form as FlaskForm
. 如果您需要两种形式,请为一个导入别名,以免名称冲突:
from flask_wtf import Form as FlaskForm
。
You have redundantly written the following imports below the large import block at the top. 您已经在顶部的大导入块下面多余地写入了以下导入。
from flask.ext.wtf import Form
from wtforms import Form, TextField, BooleanField, PasswordField, TextAreaField, validators
Simply do not import Form
from wtforms
, or reverse the two lines, to effect the immediate fix. 只需不从
wtforms
导入Form
或反转两行即可立即修复。
from flask.ext.wtf import Form
from wtforms import TextField, BooleanField, PasswordField, TextAreaField, validators
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.