Как получить информацию о строке из таблицы HTML в Python Flask

Я разрабатываю простой веб-интерфейс с помощью Flask, который отображает таблицу из базы данных, и когда пользователь выбирает определенную строку, Flask получает информацию о конкретном столбце выбранной строки.

со следующими кодами я отображаю таблицу с кнопкой 5 столбцов данных и один последний столбец «отправить». При нажатии кнопки «Отправить» определенной строки информация второй столбец («Название») должна быть отправлена ​​​​обратно в приложение Flask.

Это работает на 90%, потому что при нажатии кнопки всегда публикуется информация первой строки, даже если выбрана другая строка. Кто-нибудь может понять, что здесь пошло не так?

Спасибо!

вот код фляги

@app.route("/", methods=["GET", "POST"])
def home():
    df = pd.read_excel('database.xlsx')
    this_list = df.values.tolist()
    if request.method = = "POST":
        if request.form.get('select_song') == 'select':
            print('selected')
            print(request.form.get("title"))
    return render_template('basic_table.html', title='Basic Table',
                           table=this_list)

это basic_table.html

<form method = "POST">
  <table id = "data" class = "table table-striped">
    <thead>
      <tr>
        <th>Type</th>
        <th>Title</th>
        <th>Location</th>
        <th>Translation</th>
        <th>Content</th>
        <th>selection</th>
      </tr>
    </thead>
    <tbody>
      {% for row in table %}
        <tr>
          <td>{{ row[0] }}</td>  
          <td><input type = "hidden" name = "title" value = "{{ row[1] }}"> {{ row[1] }}</td>
          <td>{{ row[2] }}</td>
          <td>{{ row[3] }}</td>
          <td>{{ row[4] }}</td>
          <td>
            <input class = "form__submit form__input" type = "submit" value = "select" name = "select_song"/>
          </td>
        </tr>
      {% endfor %}
    </tbody>
  </table>
{% endblock %}
</form>
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы нажимаете кнопку типа «отправить», она отправляет форму, прикрепленную к этой кнопке отправки. Отправка формы означает, что она будет передавать html-элементы по паре имя/значение.

В вашем коде у вас есть ТОЛЬКО 1 форма, и каждая строка имеет один и тот же элемент ввода с именем title. Поэтому, когда вы отправляете форму, она отправит первый экземпляр title

Здесь есть 2 возможных решения

  1. Вы меняете свой код так, чтобы у вас была форма в каждой строке. Таким образом, когда вы отправляете, вы отправляете форму только для этой строки.

  2. Вы сохраняете свой код как есть, но добавляете код Javascript для «перехвата» вашего действия отправки. Затем ваш код JS определит, какую строку вы щелкнули, выберет значение заголовка в этой строке и вручную отправит форму с этим значением.

Большое спасибо. Я выбрал первое решение, и оно работает просто и идеально.

Beamjim1234 02.04.2022 19:45

Другие вопросы по теме