Запрос и отображение целого числа из db Flask sqlAlchemy

-1

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()
  • 0
    Вы можете опубликовать сообщение об ошибке?
  • 0
    Да, в консоли я получаю эту ошибку .. 127.0.0.1 - - [10 / Aug / 2017 12:50:41] "POST / super HTTP / 1.1" 500 - и в сети после того, как я заполняю текстовые поля данными это идет к "Внутренней ошибке сервера"
Теги:
flask
sqlalchemy

1 ответ

0
Лучший ответ

Ваш 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('/')
  • 0
    Ох, ну ладно! Спасибо за помощь!! Это сработало
  • 0
    @CarlosNavarro Рад, что это помогло, не могли бы вы отметить как ответили тогда?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню