dem171
@dem171
3 дня изучаю питон по книге Майкла Доусона

Как добавить комментарий к карточке?

хочу сделать функцию добавления комментария к карточкам , но не могу понять как правильно написать обработчик
пытаюсь сделать так:
@app.route('/add_comment', methods=['GET','POST'])
def add_comment(id):
    if request.method == 'POST':
        author_com = current_user.id
        post_com = Cards.query.get(id)
        text = request.form['text']
        comment = Comments(text_comment=text, user_id=author_com, card_id=post_com)
        try:
            db.session.add(comment)
            db.session.commit()
            flash("Комментарий успешно добавлен")
            return redirect('index')
        except: "Ошибка при добавлении комментария"
    else:
        flash("Необходимо заполнить все поля ")
        return redirect('/index')

при кнопке отправить выдает ошибку TypeError: add_comment() missing 1 required positional argument: 'id'
хотя я же указал id
Комментарий привязан к 2 моделям : User, Cards
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
grantur5707
@grantur5707
Full Stack Web Developer
@app.route('/add_comment/<int:id>', methods=['GET', 'POST'])
def add_comment(id):
    if request.method == 'POST':
        author_com = current_user.id
        post_com = Cards.query.get(id)
        text = request.form['text']
        comment = Comments(text_comment=text, user_id=author_com, card_id=id)  # Здесь указывается card_id=id
        try:
            db.session.add(comment)
            db.session.commit()
            flash("Комментарий успешно добавлен")
            return redirect('index')
        except:
            flash("Ошибка при добавлении комментария")
            return redirect('index')
    else:
        flash("Необходимо заполнить все поля")
        return redirect('/index')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Погоди, у тебя параметр id откуда должен браться, и как передаваться?
ЕМНИП, параметры метода-обработчика - это в первую очередь GET-параметры. А у тебя в url для роута параметры не прописаны.
Если ты берёшь id из поля формы, то убери его из параметров, и бери его аналогично text.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы