¿Eliminar filas de la base de datos con un matraz de python?

Estoy usando un marco de matraz, y parece que no puedo eliminar filas de la base de datos. El siguiente código da un error 405: “El método no está permitido para la URL solicitada”. ¿Algunas ideas?

En el py:

@app.route('/delete/', methods=['POST']) def delete_entry(): 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', post=post)) 

En el html:

 

delete

Al hacer clic en deletehttps://stackoverflow.com/questions/25947251/deleting-rows-from-database-with-python-flask/ se emitirá una solicitud GET, y su método delete_entry solo responde a POST.

Debe: 1. reemplazar el enlace con un formulario y enviar botón o 2. hacer que el enlace envíe un formulario oculto con JavaScript.

Aquí está cómo hacer 1:

 
'); form.submit(); }); }); ... Deletehttps://stackoverflow.com/questions/25947251/deleting-rows-from-database-with-python-flask/

Una cosa que no debes hacer es hacer que tu método delete_entry responda a GET. Los GET están diseñados para ser idempotentes (son seguros para ejecutarse repetidamente y no realizan acciones destructivas). Aquí hay una pregunta con algunos detalles más.

Alternativamente, cambie POST a BORRAR para que pueda continuar.

 @app.route('/delete/', methods=['DELETE'])https://stackoverflow.com/questions/25947251/deleting-rows-from-database-with-python-flask/ 

Idealmente, deberías usar el método HTTP DELETE.

Utilicé flaskr como base para mi proyecto Flask (como parece que también lo hiciste).

En el .py:

 @app.route('/delete', methods=['POST']) def delete_entry(): if not session.get('logged_in'): abort(401) g.db.execute('delete from entries where id = ?', [request.form['entry_id']]) g.db.commit() flash('Entry deleted') return redirect(url_for('show_entries'))https://stackoverflow.com/questions/25947251/deleting-rows-from-database-with-python-flask/ 

En el HTML:

 
https://stackoverflow.com/questions/25947251/deleting-rows-from-database-with-python-flask/

Quería un botón, pero podría usar fácilmente un enlace con la solución aquí .

Un simple enlace en HTML envía una solicitud GEThttps://stackoverflow.com/questions/25947251/deleting-rows-from-database-with-python-flask/ , pero su ruta solo permite solicitudes PUThttps://stackoverflow.com/questions/25947251/deleting-rows-from-database-with-python-flask/ .

https://stackoverflow.com/questions/25947251/deleting-rows-from-database-with-python-flask/ no admite solicitudes PUThttps://stackoverflow.com/questions/25947251/deleting-rows-from-database-with-python-flask/ . Debe enviar la solicitud con un formulario y / o con el código JavaScript. (Consulte Hacer un enlace con POST en lugar de GET ).