【问题标题】:Flask-WTF form doesn't have attribute 'validate_on_submit'Flask-WTF 表单没有属性“validate_on_submit”
【发布时间】:2015-08-26 03:54:17
【问题描述】:

我正在使用 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)

【问题讨论】:

    标签: python flask wtforms flask-wtforms


    【解决方案1】:

    您导入了from flask.ext.wtf import Form,然后导入了from wtforms import *,其中包括基本的WTForms Form。所以名称Form 指的是绑定到它的最后一个对象wtforms.Form。这就是您避免使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 2016-10-01
      • 2020-01-02
      相关资源
      最近更新 更多