AttributeError: объект UnboundField не имеет атрибута data (python Flask) Как решить эту проблему?

Код Python: (main_

...   
from flask import Flask, render_template, url_for,request,flash,redirect         
from formzxc import Amount
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SECRET_KEY'] = '8ed085d7c0aefb62c65e9d2154c3f377'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:/https://testing.db'
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)
class Category(db.Model):
     id = db.Column(db.Integer,primary_key = True)
     desc = db.Column(db.String(25),unique = True,nullable =False)
     amt = db.Column(db.Integer,nullable =False)
     def __repr__(self):
          return f"Category('{self.desc}'.'{self.amt}')"

@app.route('/',methods = ['GET','POST']) #need to research more on the methods
@app.route('/main',methods = ['GET','POST'])
def home():
    form = Amount() #this is the amount FlaskForm imported
    if form.validate_on_submit(): #validation is true
         flash(f'Done liao','success') #a message to put; put at homepage or prev page
         newpost = Category(desc = Amount.purpose.data,amt =Amount.amount.data ) ##
         db.session.add(newpost)
         db.session.commit()
         return redirect(url_for('home')) #function
    else:
         flash('Shit!','danger')
    return render_template(f'test.html',form  = form)

 if __name__ == '__main__':
    app.run(debug=True)

 ....

Код Python (для formzxc) из flask_wtf import FlaskForm из wtforms import StringField, PasswordField, SubmitField, BooleanField, IntegerField из wtforms.validators import DataRequired, Length, Email, EqualTo

class Amount(FlaskForm):
    purpose = StringField('Type:',
                          validators = [DataRequired(),Length(max =25)])
    amount = IntegerField('Amount:',
                          validators = [DataRequired()])
    submit = SubmitField('Submit!')

Следует ли использовать form.purpose.data вместо Amount.purpose.data при вызове Category?   —  person DemonicAoi    schedule 30.12.2019

^ спасибо 4 тоже помощь   —  person DemonicAoi    schedule 30.12.2019

См. также:  Ошибка Selenium (не связана с DevTools)
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. DemonicAoi

    исправить ошибку ниже

    newpost = Category(desc = Amount.purpose.data,amt =Amount.amount.data )
    

    изменить на

    newpost = Category(desc = form.purpose.data,amt =form.amount.data )
    

    потому что вы передаете объект FlaskForm классу Amount при его создании. Класс Amount унаследовал от него форму объекта. Поэтому вам нужно использовать этот объект для получения данных.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: