Список флажков Python Flask возвращает пустой список

Я использую таблицу 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-документ в одной форме, потому что это довольно простая страница, которая упрощает работу.

Почему в 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
571
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Проблема связана с именами ваших флажков. Все они разные, поскольку вы используете переменную. Попробуйте использовать это имя:

name = "checkbox"

в этой строке вашего кода:

<input type = "checkbox" name = "checkbox{{row .index}}"

Спасибо @IoaTzimas, я куда-то попал, но не совсем туда... Теперь это печатается: ['<built-in', '<built-in'] в зависимости от того, сколько флажков было выбрано. Есть идеи, почему?

Wilmer Kluever 11.12.2020 13:15

Вы уверены, что передаете правильные значения внутри флажка в своем html-файле?

IoaTzimas 11.12.2020 13:26

Вот что я пытаюсь выяснить. Я видел в другой теме, что кто-то сказал добавить часть value = {{row .index}}>, но я не могу найти ничего об этом. В pycharm я получил предупреждение о том, что «атрибут .index здесь не разрешен» в этой конкретной части, но я проигнорировал его, потому что не знаю, что это значит и почему. Я просто доверял человеку, который сказал, что я должен использовать указанную выше строку.

Wilmer Kluever 11.12.2020 13:34

Проверьте, как вы можете передавать значения в html с помощью Flask, вы найдете много информации.

IoaTzimas 11.12.2020 13:49

Что ты имеешь в виду? Например, зачем мне отправлять данные из python в html в этом случае?

Wilmer Kluever 11.12.2020 15:56

Что такое row .like и row .index внутри вашего html? Откуда они? Какова их ценность?

IoaTzimas 11.12.2020 16:00

Я думал, что строка связана с html-таблицей, но, снова посмотрев на html-код, я вспомнил, что это данные из базы данных, из которой я читал, для отображения в таблице. Спасибо пойду разбираться!

Wilmer Kluever 11.12.2020 20:00

Любые данные в вашем html, включенные в {{ }}, являются данными Python и загружаются в ваш маршрут Flask. Проверьте там целостность этих данных (строка .index и т. д.)

IoaTzimas 11.12.2020 20:03
Ответ принят как подходящий

Наконец-то я заработал. Ответ IoaTzimas был одной из вещей, но проблема ['<built-in'] была решена путем замены value = {{row .index}} на value = {{data.index(row)}}. На самом деле это совершенно очевидно, потому что индекс строки ищется в списке «данные». Маленькая ошибка. Спасибо за помощь!

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