Registro de Películas con Flask y JavaScript

Classified in Computers

Written on in English with a size of 2.92 KB

Integración de Frontend y Backend para Películas

A continuación, se presenta la implementación técnica para el registro y gestión de películas utilizando JavaScript en el cliente y Flask en el servidor.

Implementación del Cliente con JavaScript

El siguiente bloque de código gestiona la captura de datos del formulario y su envío mediante la Fetch API:

const API_URL = 'http://127.0.0.1:5000';

const formulario = document.getElementById("pelicula_Form");
const tituloInput = document.getElementById("titulo");
const directorInput = document.getElementById("director");
const anioInput = document.getElementById("anio");

formulario.addEventListener("submit", registrar_Pelicula);

async function registrar_Pelicula(event) {
    try {
        const titulo = tituloInput.value;
        const director = directorInput.value;
        const anio = anioInput.value;

        const respuesta = await fetch(`${API_URL}/api/peliculas`, {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({ titulo, director, anio })
        });
        const data = await respuesta.json();

        if (respuesta.status === 201) {
            alert("Película registrada con éxito");
        }
    } catch (error) {
        alert("Error detectado: " + error);
    }
}

Configuración de la API REST con Flask

En el servidor, definimos las rutas necesarias para manejar las operaciones GET, POST y DELETE:

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/api/peliculas', methods=["GET", "POST"])
def get_post_peliculas():
    if request.method == "GET":
        peliculas_list = Pelicula.query.all()
        return jsonify([p.to_dict() for p in peliculas_list]), 200

    if request.method == "POST":
        data = request.get_json()
        titulo = data.get('titulo')
        director = data.get('director')
        anio = data.get('anio')

        nueva_pelicula = Pelicula(titulo, director, anio)
        db.session.add(nueva_pelicula)
        db.session.commit()
        return jsonify(nueva_pelicula.to_dict()), 201

@app.route('/api/peliculas/<int:id>', methods=["GET", "DELETE"])
def get_delete_pelicula(id):
    if request.method == "GET":
        pelicula = Pelicula.query.get(id)
        if pelicula:
            return jsonify(pelicula.to_dict()), 200
        else:
            return jsonify("Película no existe"), 404

    if request.method == "DELETE":
        pelicula = Pelicula.query.get(id)
        if pelicula:
            db.session.delete(pelicula)
            db.session.commit()
            return jsonify("Película eliminada con éxito"), 200
        else:
            return jsonify("Película no existe"), 404

if __name__ == '__main__':
    app.run(debug=True)

Related entries: