简体   繁体   English

Flask-WTF表单没有属性'validate_on_submit'

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM