2012-05-02 5 views
8

Soy un principiante, así que perdona cualquier estupidez por adelantado. Estoy usando Flask (y por extensión Jinja2) para crear una aplicación web simple, una que básicamente te permite escribir una película en un formulario web, que se agrega a una base de datos SQLite. He conseguido que Flask itere muy bien en todas las películas de la base de datos y las imprima en la página al cargarlas.¿Cómo obtengo mi botón HTML para eliminar el elemento de lista correcto de una base de datos SQLite?

Quiero incluir un botón "Eliminar" al lado de cada película. Hacer que el botón aparezca es simple. Pero no estoy seguro de cómo vincular el botón a la función delete_movie() para que elimine la película correcta asociada con el botón presionado.

Dado que habrá un botón al lado de cada película, el elemento de formulario debe tener un nombre dinámico, supongo. Pero si recibe un nombre dinámico, ¿cómo devuelvo el valor correcto a la función? Esto es lo que tengo hasta ahora:

#movies.html 
<div class=page> 
    <h1>Movie List</h1> 
    <ul class=movies> 
    {% for movie in movies %} 
     <li><h1>{{ movie.title }}</h1> 
     <form action="{{ url_for('delete_movie') }}" method=post class=delete-movie><input type=submit value=Delete name=movie_to_delete"></form> 
    {% endfor %} 
    </ul> 
</div> 

#app.py 
@app.route('/delete', methods=['POST']) 
def delete_movie(): 
    g.db.execute('delete from movies where movie = ?', [request.form['movie_to_delete']]) 
    g.db.commit() 
    return redirect(url_for('list_movies')) 

¡Gracias de antemano por cualquier ayuda!

Respuesta

10

Sólo añadir una entrada oculta a toda forma con el elemento/Identificación del nombre que desea borrar como el valor :)

por ejemplo.

<form action="{{ url_for('delete_movie') }}" method=post class=delete-movie> 
<input type=hidden value="{{ movie.name }}"name=movie_to_delete"></input> 
<input type=submit></input> 
</form> 
+0

Brilliant. Gracias Tommaso! – Barrett

+0

@Barrett feliz de que ayudó :) por favor, recuerde marcar la respuesta como correcta si resolvió su problema :) –

+0

Hecho. Soy un principiante en Stack Overflow, así como en la codificación;) – Barrett

Cuestiones relacionadas