Я использую таблицу html для отображения некоторых данных с флажками в качестве первого столбца, чтобы пользователь мог выбрать несколько строк и удалить их одновременно. HTML-код для создания флажков выглядит следующим образом:
<td>
<input type = "checkbox" name = "checkbox{{row .index}}"
value = {{row .index}}>
{{row .like}}
</td>
Я пытаюсь получить список всех индексов выбранных строк, чтобы передать их функции, которая удалит строки из базы данных. В настоящее время я просто использую эти две строки для получения списка, но каждый раз получаю пустой список:
print(request.form.getlist('checkbox'))
return 'Done'
У меня где-то глупая ошибка? PS. У меня есть почти весь html-документ в одной форме, потому что это довольно простая страница, которая упрощает работу.
Проблема связана с именами ваших флажков. Все они разные, поскольку вы используете переменную. Попробуйте использовать это имя:
name = "checkbox"
в этой строке вашего кода:
<input type = "checkbox" name = "checkbox{{row .index}}"
Вы уверены, что передаете правильные значения внутри флажка в своем html-файле?
Вот что я пытаюсь выяснить. Я видел в другой теме, что кто-то сказал добавить часть value = {{row .index}}>
, но я не могу найти ничего об этом. В pycharm я получил предупреждение о том, что «атрибут .index здесь не разрешен» в этой конкретной части, но я проигнорировал его, потому что не знаю, что это значит и почему. Я просто доверял человеку, который сказал, что я должен использовать указанную выше строку.
Проверьте, как вы можете передавать значения в html с помощью Flask, вы найдете много информации.
Что ты имеешь в виду? Например, зачем мне отправлять данные из python в html в этом случае?
Что такое row .like и row .index внутри вашего html? Откуда они? Какова их ценность?
Я думал, что строка связана с html-таблицей, но, снова посмотрев на html-код, я вспомнил, что это данные из базы данных, из которой я читал, для отображения в таблице. Спасибо пойду разбираться!
Любые данные в вашем html, включенные в {{ }}, являются данными Python и загружаются в ваш маршрут Flask. Проверьте там целостность этих данных (строка .index и т. д.)
Наконец-то я заработал. Ответ IoaTzimas был одной из вещей, но проблема ['<built-in']
была решена путем замены value = {{row .index}}
на value = {{data.index(row)}}
. На самом деле это совершенно очевидно, потому что индекс строки ищется в списке «данные». Маленькая ошибка. Спасибо за помощь!
Спасибо @IoaTzimas, я куда-то попал, но не совсем туда... Теперь это печатается:
['<built-in', '<built-in']
в зависимости от того, сколько флажков было выбрано. Есть идеи, почему?