【问题标题】:Python Flask Checkbox Retain StatusPython Flask 复选框保留状态
【发布时间】:2020-06-11 22:47:04
【问题描述】:

我正在创建一个烧瓶应用程序来控制 pi gpios。我有一些复选框,即使在页面刷新或用户离开页面后,我也需要保留状态。

渲染页面的app.py代码

@app.route("/config")
def config():
    return render_template("config.html")   

复选框的 HTML 代码

<form>
    <fieldset class="form-group">
      <legend>Device Configuration</legend>    
      <div class="form-check">
        <label class="form-check-label">
          <input class="form-check-input" type="checkbox" value="" id="check-soil">
          Soil
        </label>
      </div>
    </fieldset>
    <button type="submit" class="btn btn-primary">Update</button>
  </fieldset>
</form>

【问题讨论】:

    标签: python html css python-3.x flask


    【解决方案1】:

    由于您希望在呈现页面时(即服务器端)处理此问题,因此您需要在 config 路由中进行处理。

    我可以建议的理想方式是读取路径上的表单状态,您可以将其作为支持对象传递给 jinja 模板。

    现在在模板中有表单的部分,根据支持对象中的检查属性,您可以在 HTML 中标记为预检查字段,如下所示:

    &lt;input class="form-check-input" type="checkbox" value="" id="check-soil" checked&gt;

    checked attribute 在呈现表单时将该字段标记为选中。

    【讨论】:

    • 我正在尝试构建一个树莓派控制器,因此我需要它在后端保持选中或未选中状态。这个解决方案会这样吗?
    • 是的,这就是为什么我建议使用服务器端解决方案而不是客户端使用 Javascript。只需检查是否填写了任何字段并将它们传递给 jinja 并将其标记为checked。然后每个请求都会有一个由用户选择的持久复选框
    【解决方案2】:

    您可能希望使用 javascript 处理它,在复选框更改时添加事件侦听器并调用将数据发送回 flask/python 的异步函数

     const checkbox = document.getElementById('check-soil')
     checkbox.addEventListener('change', ()=>{
         asyncFunction()
     })
    

    如果您不熟悉创建异步函数,您可能需要查看this link

    【讨论】:

    • 我会考虑添加 javascript,这比我现在所处的位置更先进,但看起来是一个不错的解决方案
    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2016-12-21
    • 2017-02-27
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多