How to delete items from database using a Flask framework?
10,204
Solution 1
If you are going to use a POST request the variable will be available under flask's request.form
. If you stay with DELETE I think you need to change your uri. For example:
@app.route('/delete/<int:postID>', methods=['DELETE'])
Solution 2
To get the postID use this {{ loop.revindex }}
This is my code,it works!!
In the .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'))
In the 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>
Author by
Hayley van Waas
Updated on June 17, 2022Comments
-
Hayley van Waas almost 2 years
I'm working with a Flask framework, and am trying to delete an entry from the database. The code below gives this error: "The method is not allowed for the requested URL."
In the 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>
In the 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'))
How do I then get the correct postID from the html to the py?