如何使用Flask更新db中复选框的值

时间:2018-02-17 01:28:54

标签: python flask sqlalchemy

尝试用烧瓶和sqlalchemy做一个简单的待办事项应用程序,因为我之前从未使用过烧瓶中的复选框,我有以下问题。

应用

git status

HTML IS:

class Todo(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    text = db.Column(db.String(200))
    complete = db.Column(db.Boolean)


@app.route('/update', methods=['POST'])
def update():
    print(request.form)
    return redirect(url_for('index'))

当我,

<ul>
    {% for todo in incomplete %}
    <li><input id="checkbx" name="{{ todo.id }}" type="checkbox"> {{ todo.text }} </li>
    {% endfor %}    
</ul>

选中复选框以完成待办事项任务并单击更新按钮后,控制台将打印出:

print(request.form) 

如何更新数据库以将完整值从“0”更改为“1”?

ImmutableMultiDict([('11', u'on')])
  

给出400错误请求

print(request.form['checkbx']) 
  

返回无

request.form.get('checkbx') 
  

返回[]

我猜我需要做类似的事情:

todo = request.form.getlist('checkbx')

所以我可以

todo = Todo.query.filter_by(int(id)).first()

我如何从那个ImmutableMultiDict获取id(在这种情况下它是'11')???

1 个答案:

答案 0 :(得分:0)

您可以将ImmutableMultiDict转换为dict

todo = dict(request.form).keys[0]

然后按它过滤,完成并提交。