如何使用Flask框架从数据库中删除项目?

时间:2014-09-19 01:36:44

标签: python html database flask

我正在使用Flask框架,我正在尝试从数据库中删除一个条目。下面的代码给出了这个错误:“请求的URL不允许使用该方法。”

在html中:

<form action="{{ url_for('delete_entry', id=entry.id) }}" method="POST">
     <input type="hidden" name="_method" value="DELETE" />
     <input type="submit" value="Delete entry" />
</form>

在py:

@app.route('/delete', methods=['DELETE'])
def delete_entry(postID):
    if not session.get('logged_in'):
        abort(401)
    g.db.execute('delete from entries WHERE id = ?', [postID])
    flash('Entry was deleted')
    return redirect(url_for('show_entries'))

如何从html到py?

获取正确的postID

2 个答案:

答案 0 :(得分:3)

如果您要使用POST请求,该变量将在烧瓶request.form下可用。如果你继续使用DELETE我认为你需要改变你的uri。例如:

@app.route('/delete/<int:postID>', methods=['DELETE'])

答案 1 :(得分:0)

要获取postID,请使用此{{ loop.revindex }}

这是我的代码,它有效!!

在.py:

@app.route('/delete', methods=['POST'])
def delete_entry():
    if not session.get('logged_in'):
        abort(401)
    db = get_db()
    db.execute('delete from entries where id = ?'[request.form['entry_id']])
    db.commit()
    flash('Entry deleted')
    return redirect(url_for('show_entries'))

在HTML中:

<form action="{{ url_for('delete_entry') }}" method=post class=delete-entry>
          <input type="hidden" name="entry_id" value="{{ loop.revindex }}">
          <input type="submit" value="Delete" />
</form>