Есть выпадающие списки с мультивыбором, когда пользователь выбрал нужные ему показатели и нажал кнопку "применить", появляется таблица с учетом выбранных пользователем параметров, но сами выбранные параметры в выпадающем списке не сохраняются, т.е все галочки поставленные пользователем слетают.
Подскажите, пожалуйста, как сделать чтоб выбор пользователя сохранялся при срабатывании метода POST?
app.py
conn = psycopg2.connect(**params)
@app.route("/", methods=["GET","POST"])
def index():
with psycopg2.connect(**params) as conn:
cur = conn.cursor()
cur.execute("SELECT * FROM fact;")
rows = cur.fetchall()
cur.close
if request.method == "POST":
# Получение переменных выбранных пользователем и обработка массива select multiple
year = [int(i) for i in request.form.getlist("year") if i.isdigit()]
print(year)
station = [str(i) for i in request.form.getlist("station")]
print(station)
indicators = [str(i) for i in request.form.getlist("indicators")]
print(indicators)
columns = [str(i) for i in request.form.getlist("columns")]
print(columns)
# Запрос к БД с использованием переменных
with psycopg2.connect(**params) as conn:
cur = conn.cursor()
cur.execute("SELECT {} FROM fact WHERE year = ANY(%s) AND indicators = ANY(%s) AND name = ANY(%s);"
.format(",".join(["\"{}\"".format(c) for c in columns])),(year, indicators, station))
rows = cur.fetchall()
cur.close
# Имя скачавшегося файла
filename = "fact.xlsx"
# Путь файла(выбран стандартный, downloads)
filepath = os.path.join(os.path.dirname(__file__), filename)
# создаем новую книгу excel
workbook = openpyxl.Workbook()
# Получаем активный лист
worksheet = workbook.active
# Заполняем таблицу данными из запроса к базе данных
worksheet.append(columns)
for row in rows:
worksheet.append(list(row))
# Сохраняем результат в файл
workbook.save(filepath)
# Отображение полученных данных на странице
return render_template("index.html", rows=rows, columns=columns, form_visible=True)
else:
return render_template("index.html", rows=rows, form_visible=False)
index.html
{% if form_visible %}
<form method ="post" action="/">
<label for="year"></label>
<select type="number" id = "year" name ="year" class="selectpicker" data-actions-box="true" multiple="multiple">
<option class="optionGroup" selected disabled>Выберите год(а)</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
<option value="2021">2021</option>
<option value="2022">2022</option>
<option value="2023">2023</option>
</select><br><br>
..............