En esta entrada te mostramos cómo levantar un servidor en Python utilizando Flask, un microframework ligero ideal para desarrollo web. Aprenderás a recoger datos desde un formulario HTML y mostrar esa información en una segunda página web, todo gestionado desde tu servidor Flask.

Esta guía práctica es perfecta para quienes desean iniciarse en el desarrollo backend con Python de forma sencilla y efectiva.

Crear el servidor en Python

Abrimos visual estudio y creamos la siguiente estructura de carpetas:

  • Modelo
  • Vista
  • Controlador

Donde el controlador va a tener el archivo de inicio del servidor, y la capa de vista los html de salida, y la capa del modelo será la carpeta donde se alojaran los archivos correspondientes de una base de datos.

Estructura de carpetas en un servidor Web en Python

Capa de la vista

Creamos un archivo inicio.html con los datos del formulario  para enviarlos a resultados.html mediante el metodo POST:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
        <form action="/resultados" method="post">  
               <label for="dni">Dni:</label>
               <input type="text" id="dni" name="dni">  
               <br>       
               <label for="nombre">Nombre:</label>
               <input type="text" id="name" name="nombre">  
               <br>
               <label for="apellidos">Apellidos:</label>
               <input type="text" id="apellidos" name="apellidos">  
               <br>
               <label for="direccion">Direccion:</label>
               <input type="text" id="direccion" name="direccion">
               <br>
               <input type="submit" value="Enviar">
        </form>      
</body>
</html>

Creamos el archivo de salida resultados.html:




    
    
    
    Document


    

El dni es:

El nombre es:

Los apellidos son:

La direccion es:

Capa del controlador

Establecemos la ruta donde se encuentran las plantillas: 

template_dir = os.path.relpath('../vista')

Creamos una instancia del modulo principal y además establecemos la ruta del directorio de las plantillas:

app = Flask(__name__,template_folder=template_dir)

Definimos la ruta de inicio y la plantilla inicial que va arrancar en la ejecución:

@app.route('/')

def index():        

    return render_template('inicio.html')

 Definimos la ruta donde esta el archivo resultados, creamos una nueva función llamada resultados donde le decimos que si mandamos los datos mediante POST recoja los datos de la request y nos valla al html de resultados:

@app.route('/resultados',methods=['POST'])

def resultados():

  if request.method == 'POST':

     dni = request.form['dni']

     nombre = request.form['nombre']  

     apellidos = request.form['apellidos']

     direccion = request.form['direccion']      

     return render_template('resultados.html',dni=dni,nombre=nombre,apellidos=apellidos,direccion=direccion)

  return render_template('inicio.html')

 Arrancamos la aplicación del servidor en Python en la ruta localhost y en el puerto 8080

if __name__=='__main__':

    app.run(host='localhost',port=8080,debug=True)
from flask import Flask, render_template, request
import os
template_dir = os.path.relpath('../vista') #Establecemos el nombre de la carpeta de la vista
app = Flask(__name__,template_folder=template_dir)
@app.route('/')
def index():        
    return render_template('inicio.html')

@app.route('/resultados',methods=['POST'])
def resultados():
  if request.method == 'POST':
     dni = request.form['dni'] 
     nombre = request.form['nombre']  
     apellidos = request.form['apellidos'] 
     direccion = request.form['direccion']      
     return render_template('resultados.html',dni=dni,nombre=nombre,apellidos=apellidos,direccion=direccion) 
  return render_template('inicio.html')
if __name__=='__main__':
    app.run(host='localhost',port=8080,debug=True)

Vemos las salidas del servidor basado en Python:

En la primera imagen insertamos los datos en una la pagina web del localhost y la segunda imagen vemos los datos de salida impresos en la pagina de resultados.

Pagina wed de los datos de entrada del servidor Web en Python
Pagina wed de los datos de salida del servidor Web en Python