#python #html #mysql #flask #jinja2
Вопрос:
У меня есть HTML — таблица, в которой я хочу иметь кнопку «подробнее» для каждой строки в последнем столбце.
Я хочу иметь возможность, когда я нажмите на кнопку «Подробнее» кнопку для каждой строки, значение месяца (это первая колонка таблицы, например: ‘2021-10’) для этой конкретной строки вышлем в колбу функцию для запроса информация только для этого конкретного месяца, а затем браузер будет перейти в другой HTML-файл (monthly_sales_report_sub.html), в которых новая информация в виде таблицы, которая содержит одну строку.
Каков наилучший способ заставить работать HTML-код и функцию flask? Мой текущий код покажет все записи за месяцы на monthly_sales_report_sub.html
Заранее спасибо!
Приведенный ниже HTML-код (monthly_sales_report.html):
lt;table width=80%gt; lt;!-- Show Report Table --gt; lt;theadgt; lt;trgt; {% for header in headings %} lt;thgt;{{ header }}lt;/thgt; {% endfor %} lt;/trgt; lt;/theadgt; lt;tbodygt; {% for row in data %} lt;trgt; {% for cell in row %} lt;tdgt;{{ cell }}lt;/tdgt; {% endfor %} lt;td class="td-actions text-right"gt; lt;a href=monthly_sales_report_subgt;lt;input type="submit" value="more details"gt;lt;lt;/inputgt;lt;/agt; lt;/tdgt; lt;/trgt; {% endfor %} lt;/tbodygt; lt;/tablegt;
Моя текущая функция колбы выглядит следующим образом:
@api.route('/monthly_sales_report', methods=['GET']) def monthly_sales_table(): return render_template("monthly_sales_report.html", headings=SQL_Operations.get_monthly_sales_report(connection)['headings'], data=SQL_Operations.get_monthly_sales_report(connection)['rows']) @api.route('/monthly_sales_report_sub', methods=['GET']) def monthly_sales_table_sub(): return render_template("monthly_sales_report_sub.html", headings=SQL_Operations.get_monthly_sales_report_sub(connection)['headings'], data=SQL_Operations.get_monthly_sales_report_sub(connection)['rows'])
SQL_Operations.py
def get_monthly_sales_report_sub(connection): cursor = connection.cursor() query = ("""SELECT month, sales_person, total_num_sold, total_sales FROM Sale;""") cursor.execute(query) res = [] for (month, sales_person, total_num_sold, total_sales) in cursor: res.append([month, sales_person, total_num_sold, total_sales]) res_new = dict() res_new['headings'] = ['month', 'sales_person', 'total_num_sold', 'total_sales'] res_new['rows'] = res return res_new
Ответ №1:
В flask вы можете создавать маршруты с аргументами
@app.route('/detail/lt;monthgt;',methods = ['GET'])
В вашей таблице вы можете использовать кнопку или кнопку с тегом с:
lt;a href={{ url_for('detail',month = your_row_month_value) }} ...
Вы должны добавить url_for в свой импорт колбы