如何在Flask中使用复选框创建数组

时间:2018-11-16 20:16:48

标签: 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 %}

还有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)

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

checked = ["A", "C"]

2 个答案:

答案 0 :(得分:2)

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

首先,将name属性的当前值设置为value属性。这将确定表单发布期间烧瓶拉动的值。其次,将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'>

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

print(request.form.getlist('my_checkbox'))
>>> ['A', 'C']

答案 1 :(得分:0)

将POST请求发送到烧瓶服务器后,您可以从request.form获取表单内容。这是基于POST请求的字典。

使用复选框,如果勾选了该复选框,则name中的输入<input type="checkbox" name="A" class="danger">将在此词典中。因此,您可以像这样检查复选框:

if "A" in request.form:
    checked.append("A")  # You can of course append any arbitrary value