Я разрабатываю простой веб-интерфейс с помощью 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>






Когда вы нажимаете кнопку типа «отправить», она отправляет форму, прикрепленную к этой кнопке отправки. Отправка формы означает, что она будет передавать html-элементы по паре имя/значение.
В вашем коде у вас есть ТОЛЬКО 1 форма, и каждая строка имеет один и тот же элемент ввода с именем title. Поэтому, когда вы отправляете форму, она отправит первый экземпляр title
Здесь есть 2 возможных решения
Вы меняете свой код так, чтобы у вас была форма в каждой строке. Таким образом, когда вы отправляете, вы отправляете форму только для этой строки.
Вы сохраняете свой код как есть, но добавляете код Javascript для «перехвата» вашего действия отправки. Затем ваш код JS определит, какую строку вы щелкнули, выберет значение заголовка в этой строке и вручную отправит форму с этим значением.
Большое спасибо. Я выбрал первое решение, и оно работает просто и идеально.