我从烧瓶开始,所以我对此有很多疑问。其中之一是如何根据复选框输入的名称创建一个数组? 换句话说,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"]
答案 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