Python 将复选框值发送到烧瓶

Python 将复选框值发送到烧瓶,python,html,flask,Python,Html,Flask,我有一个表单如下所示: <form id="settings" action="{{ url_for("load_settings") }}" method="post"> ... <label for="m_r">Interval 1</label> <input type="text" name="morn_r" id="m_r"> <label for="d1_e">Enabled</label

我有一个表单如下所示:

<form id="settings" action="{{ url_for("load_settings") }}" method="post">
... 

    <label for="m_r">Interval 1</label>
    <input type="text" name="morn_r" id="m_r">

    <label for="d1_e">Enabled</label>
    <input type="checkbox" name="d_enabled" id="d1_e" value="off" onclick="toggle_check(this)">
</form>
下面是我的Python:

@app.route("/settings", methods=["POST", "GET"])
def load_settings():
    if request.method == "POST":
        settings = list(request.form.values())
        print(settings)
    return render_template("settings.html")

如果我将文本输入保留为空,但单击复选框,则会打印以下内容:
[…,''on']

现在,如果我也将复选框保留为空,那么将打印以下内容:
[…,'']
。由于某些原因,它不会添加复选框的值

我不知道怎么解决这个问题。有人能帮忙吗

谢谢。

从以下州偷窃:

复选框(和单选按钮)是可由用户切换的开/关开关。当控制元素的checked属性被设置时,开关处于“开启”状态。提交表单时,只有“打开”复选框控件才能成功

因此,当取消选中复选框时,复选框值不存在的原因与Flask无关。当复选框未选中时,浏览器不会将表单输入序列化到请求中

不过,您可以做的是在模板中为输入提供一些合理的值:

<input type="checkbox" name="d_enabled" value="on">
从美国偷窃:

复选框(和单选按钮)是可由用户切换的开/关开关。当控制元素的checked属性被设置时,开关处于“开启”状态。提交表单时,只有“打开”复选框控件才能成功

因此,当取消选中复选框时,复选框值不存在的原因与Flask无关。当复选框未选中时,浏览器不会将表单输入序列化到请求中

不过,您可以做的是在模板中为输入提供一些合理的值:

<input type="checkbox" name="d_enabled" value="on">
if request.form.get('d_enabled') == 'on':
    # checkbox is checked
else:
    # checkbox is not checked