我正在尝试添加复选框,以便从数据库中删除多条记录。我给同一个name
的多个输入,但即使检查了一些框,request.form.getlist
也会返回一个空列表。
{% for order in orders %}
<input type="checkbox" name="select_button" value="{{ order.order_id }}">
{% endfor %}
@mod_order.route('_delete_multiple_confirmation', methods=['GET', 'POST'])
def delete_multiple_orders_confirmation():
orders = (request.form.getlist('select_button'))
user_id = request.args.get('user_id')
response_context = {'orders': orders, 'user_id': user_id}
return render_template('delete_multiple_order_confirmation.html', **response_context)
答案 0 :(得分:1)
这个人把我打倒了好几个小时! 希望这篇文章可以帮助人们节省时间。
当您提供多个输入时,您的输入类型将隐式更改为数组。 这意味着您必须从数组中提取结果。 为此,您可以在输入变量“ []”名称的末尾添加这2个字符:
在您的情况下,我们得到: 订单=(request.form.getlist('select_button []'))
全栈示例:
==>在HTML中使用引导程序
<select class="selectpicker" multiple title="input list" id="inputlist">
<option>input1</option>
<option>input2</option>
<option>input3</option>
</select>
<small>Click Go! to proceed : </small>
<button class="myConfirmButton btn btn-primary">Go!</button>
<small><div id="myFeedback"></div></small>
==>在您的jquery / javascript
中<script>
$(document).ready(function(){
$(".myConfirmButton").click(function(){
// this line creates the array of all the checked inputs
var values = $('#listinput').val()
$.ajax({
url:"/processlist",
dataType:'html',
type:'post',
contentType: 'application/x-www-form-urlencoded',
data : {
listinput: values
},
success: function( data ){
$('#myFeedback').html( data );
},
error: function( errorThrown ){
$('#myFeedback').html( errorThrown );
}
});
});
});
</script>
==>在您的python烧瓶代码中
@app.route("/processlist",methods=['GET', 'POST'])
def processlist():
myinput=request.form.getlist('listinput[]') # here you add [] at the end
return '<br>'.join(myinput) # shows the total input