Im в настоящее время работает в простом списке SuperMarket, где у вас есть 2 текстовых ввода, где они спрашивают продукт и цену. Изображение программы без текстового поля цены
Изображение обоих текстовых полей
Поэтому, когда я запрашиваю эти 2 ввода данных, это дает мне ошибку в моем Super Route, которая проверяет данные.
@app.route('/super', methods=['POST'])
def add_super():
content = request.form['content']
#precio = request.form['precio']
if not request.form['content'] or not request.form['precio']:
flash('Debes ingresar un texto')
return redirect('/')
super = Super(content)
#super = Super(precio)
db.session.add(super)
db.session.commit()
flash('Registro guardado con exito!')
return redirect('/')
Здесь я добавил цену, чтобы запросить данные из базы данных, поэтому я могу позвонить ей и показать ее позже, но это то, где я получаю ошибку.
Так устанавливается моя БД:
class Super(db.Model):
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.Text)
precio = db.Column(db.Integer)
listo = db.Column(db.Boolean, default=False)
def __init__(self, content,precio):
self.content = content
self.precio = precio
self.listo = False
def __repr__(self):
return '<Content %s>' % self.content
# def __repr__(self):
# return '<Precio %s>' % self.precio
db.create_all()
Ваш Super
принимает 2 параметра в __init__
, но вы только поставляете 1 параметр.
См. Например, что произойдет, если мы определим в интерпретаторе:
>>> class c1(object):
... def __init__(self, p1, p2):
... self.p1 = p1
... self.p2 = p2
Затем мы пытаемся создать экземпляр, используя только один параметр:
>>> c1('spam')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() takes exactly 3 arguments (2 given)
Вероятно, это происходит, когда вы делаете:
super = Super(content)
Однако, если мы представим два параметра:
>>> c1('spam','eggs')
<__main__.c1 object at 0x7f64a2f3a350>
Итак, вам нужно создать экземпляр Super
с двумя аргументами, например, вы, вероятно, планировали:
super = Super(content, precio)
Подумав немного о том, что вы были, это примерно что-то вроде этого:
@app.route('/super', methods=['POST'])
def add_super():
content = request.form.get('content')
precio = request.form.get('precio')
if precio is None or content is None:
flash('Debes ingresar un texto')
return redirect('/')
super = Super(content, precio)
db.session.add(super)
db.session.commit()
flash('Registro guardado con exito!')
return redirect('/')