[英]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.