You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask提交表单后保留左侧复选框及选中状态求助

解决提交后复选框消失及选中状态不保留的问题

问题根源

提交后左侧复选框消失,是因为后端generate接口返回模板时,没有传递table_names数据,导致前端循环渲染复选框的逻辑无法执行;同时没传递已选中的表格列表,没法维持选中状态。


1. 后端代码修改

需要在generate函数里,把表格名称列表和已选中的表格列表都传给模板:

@app.route('/')
def index():
    table_names = get_table_names()
    return render_template('combined.html', table_names=table_names, db_name=database)

@app.route('/generate', methods=['POST'])
def generate():
    import time
    selected_tables = request.form.getlist('table')
    # 你的业务逻辑代码......
    
    # 必须获取所有表格名称,传给模板用来渲染复选框
    table_names = get_table_names()
    return render_template('combined.html', 
                           tables=[data_dict.to_html(classes='data')], 
                           titles=[''],
                           graph_done=graph_done,
                           table_names=table_names,  # 新增:传递表格名称列表
                           selected_tables=selected_tables)  # 新增:传递已选中的表格列表

2. 前端代码修改

删掉多余的隐藏字段,通过Jinja2的条件判断给已选中的复选框添加checked属性:

<body>
    <div id = "container">
  <div class="left">
    <form method="post" action="/generate">
        {% for table_name in table_names %}
        <input type="checkbox" name="table" value="{{ table_name }}" 
               {% if table_name in selected_tables %}checked{% endif %}>
        {{ table_name }}<br>
        {% endfor %}
        <input type="submit" value="Generate">
    </form>
  </div>
  <div class="right">
      {% if tables %}
        {% for table in tables %}
            {{ titles[loop.index] }}
            <table class="table-container" style="margin: 0 auto;"> <!-- Center the table -->
                {{ table|safe }}
            </table>
    {% endfor %}
    {% endif %}
  </div>
    </div>
</body>

说明

  • 后端传递table_names保证复选框能正常渲染,传递selected_tables用来标记已选中的项。
  • 前端通过{% if table_name in selected_tables %}checked{% endif %}实现选中状态的保留,用户提交后可以直接修改复选框再重新生成。

内容的提问来源于stack exchange,提问作者Priyadharshini Jayakumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 06:33:11