如何在 Flask 中创建带有复选框的数组

w4g*_*w4g 4 python flask

我从烧瓶开始,所以我有很多问题。其中之一是如何根据复选框输入的名称创建数组?换句话说,python 会遵循这样的逻辑:对于每种类型的“复选框”,填充了哪些?

我有这些代码:index.html

{% block content %}


<form method="POST" action="">
<div class="card" style="margin:50px 0">
    <div class="card-header"><b>Letters</b></div>

    <ul class="list-group list-group-flush">
    <li class="list-group-item">A
    <label class="switch ">
    <input type="checkbox" name="A" class="danger">
    <span class="slider round"></span>
    </label>
    </li>
    <li class="list-group-item">B
    <label class="switch ">
    <input type="checkbox" name="B" class="danger">
    <span class="slider round"></span>
    </label>
    </li>
    <li class="list-group-item">C
    <label class="switch ">
    <input type="checkbox" name="C" class="danger">
    <span class="slider round"></span>
    </label>
    </li>
    </ul>
    <button type="submit">Go</button>
</div>
</form>

{% endblock content %}
Run Code Online (Sandbox Code Playgroud)

和 funcs.py

from flask import Flask, render_template, url_for, redirect, request

app = Flask(__name__)

app.config['SECRET_KEY'] = '0000'


@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

当用户选中名为“A”和“C”的复选框时,python 创建一个数组并在用户提交后不久显示该数组。

checked = ["A", "C"]
Run Code Online (Sandbox Code Playgroud)

Won*_*ket 7

您的 HTML 正朝着正确的方向前进,但 Flask 进行了一些小的更改以有效地处理此问题。

首先,将name属性的当前值设置 为该value属性。这将确定 Flask 在表单发布期间拉取的值。其次,将name属性设置为具有共同值。

<input type="checkbox" value="A" class="danger" name='my_checkbox'>
<input type="checkbox" value="B" class="danger" name='my_checkbox'>
<input type="checkbox" value="C" class="danger" name='my_checkbox'>
Run Code Online (Sandbox Code Playgroud)

如此配置 HTML 后,您可以使用getlistFlask 的请求模块中的方法。

print(request.form.getlist('my_checkbox'))
>>> ['A', 'C']
Run Code Online (Sandbox Code Playgroud)