- ¿Qué es un formulario HTML?
- Estructura de un formulario
- Métodos de envío: GET vs POST
- Tipos de campos de formulario (<input>)
- Atributos importantes y cómo se usan
- ¿Qué hace el servidor con esos datos?
- Mantener el campo de búsqueda con el último valor
¿Te has preguntado cómo buscar recetas o productos en una página? Vamos a construir ese sistema juntos, usando formularios HTML y un poco de código del lado del servidor
¿Qué es un formulario HTML?
<form>) es una herramienta que usamos para recoger datos desde una página web y enviarlos a un servidor, generalmente para hacer algo con esa información.
Pero hoy lo vamos a usar para buscar o filtrar contenido, sin modificar nada.
Un ejemplo real: en RecetasGratis.net puedes buscar recetas usando una barra como esta:
📎 Enlace: Recetas de cocina
Y así se implementa en HTML algo parecido:
<form action="/buscar-recetas" method="get">
<input type="search" required name="q" placeholder="¿Qué quieres cocinar hoy?">
</form>
Estructura de un formulario
Vamos a ver qué significa cada parte:
| Elemento | Explicación |
|---|---|
<form> |
Es el contenedor de todo el formulario |
action="/buscar-recetas" |
A dónde se envían los datos cuando se hace la búsqueda |
method="get" |
El tipo de solicitud. Con get, los datos van en la URL |
<input type="search"> |
Campo de texto optimizado para búsquedas |
name="q" |
Nombre del campo. Así se accede al valor en el servidor |
required |
Obliga al usuario a llenar el campo antes de enviarlo |
Métodos de envío: GET vs POST
Cuando defines un formulario, debes decirle cómo enviar los datos:
get: Envía los datos como parte de la URL. Ideal para búsquedas y filtros porque puedes compartir el enlace.post: Envía los datos "por dentro", como si los escondiera. Se usa cuando se crean o modifican datos, como cuando alguien se registra.
En el ejemplo de búsqueda, usamos get porque no estamos cambiando nada, solo consultando.
Por ejemplo:
Si escribes "arepas" y envías el formulario con get, el navegador irá a esta URL:
/buscar-recetas?q=arepas
Esa URL puede compartirse, guardar en favoritos, etc.
Tipos de campos de formulario (<input>)
El elemento <input> es súper versátil. Dependiendo del atributo type, puede comportarse de distintas formas. Aquí te dejo una tabla con algunos:
| Tipo de campo | Qué hace |
|---|---|
text |
Texto libre |
search |
Similar al text, pero optimizado para búsquedas |
email |
Campo para correo electrónico |
password |
Oculta los caracteres |
checkbox |
Casilla de verificación (selección múltiple) |
radio |
Botones de opción (solo uno a la vez) |
submit |
Botón que envía la información del formulario |
tel |
Teléfono |
range |
Deslizador con rango de valores |
Atributos importantes y cómo se usan
Todos los campos en un formulario (excepto los botones) deben tener el atributo name, porque con ese nombre vamos a acceder a la información en el servidor.
<form action="/buscar-recetas" method="get">
<input type="search" name="q" required>
</form>
Si alguien busca “tacos de carne”, el servidor recibe:
q=tacos%20de%20carne
¿Qué hace el servidor con esos datos?
Imagínate que tienes un sitio de recetas. El formulario manda la palabra clave, y el servidor filtra las recetas que la contienen.
En Python con Flask podría verse así:
@app.route('/buscar-recetas')
def buscar():
q = request.args.get('q')
recetas_filtradas = filtrar_por_nombre(q)
return render_template('resultados.html', recetas=recetas_filtradas, busqueda=q)
Mantener el campo de búsqueda con el último valor
Buena práctica: mostrar lo que la persona escribió, así puede refinar su búsqueda sin empezar de cero.
Paso 1: enviar el valor al template
return render_template('resultados.html', recetas=recetas_filtradas, busqueda=q)
Paso 2: usar ese valor en el campo
<form action="/buscar-recetas" method="get">
<input type="search" name="q" value="{{ busqueda }}">
<input type="submit" value="Buscar">
</form>
De esta forma, cuando se recargue la página con los resultados, el campo seguirá mostrando lo que la persona escribió antes.
Resumen
- Los formularios HTML permiten enviar datos desde la web al servidor.
- Los formularios de búsqueda usan
gety permiten compartir los resultados con una URL. <form>es el contenedor principal, y cada campo usanamepara identificar sus datos.requiredayuda a validar campos antes de enviarlos.- En el servidor, puedes usar la palabra clave enviada para mostrar solo los resultados que coincidan.
- Mostrar el valor anterior en el campo de búsqueda mejora mucho la experiencia de quien usa la web.
Trabajo independiente
- Crea una plantilla para mostrar usuarios en
templates/users/index.html. - Agrega al archivo
example.pyel siguiente diccionario.
users = [
{'id': 1, 'name': 'mike'},
{'id': 2, 'name': 'mishel'},
{'id': 3, 'name': 'adel'},
{'id': 4, 'name': 'keks'},
{'id': 5, 'name': 'kamila'}
]
- Configura el manejador de la ruta /users y muestra los nombres de los usuarios del arreglo en la página /users.
- Implementa en la página /users un formulario de búsqueda, donde se pueda ingresar parte del nombre del usuario para buscarlo. El formulario debe enviarse a la misma página.
- Ajusta el manejador /users para que realice el filtrado de los nombres.
- Prueba filtrar usuarios. La búsqueda mi debe devolver tres nombres: mike, mishel y kamila.
Aplicación de referencia
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.