Menu
CoddyTech

Un formulario de búsqueda

Parte de la sección Formularios del Journey de Django de Coddy. Lección 1 de 20.

Los visitantes todavía no pueden buscar en el tablero de eventos. Un formulario es un conjunto de campos y un botón que envía a una URL lo que se escribió.

Un formulario que solo lee datos usa method="get": el navegador pone cada campo en la cadena de consulta de la URL, como name=value. Un filtro de tamaño en la página de una tienda:

<form method="get">
    <select name="size">
        <option value="S">Small</option>
        <option value="L">Large</option>
    </select>
    <button type="submit">Show</button>
</form>

Al elegir Large, se abre /products/?size=L. El name del campo es la clave, así que la vista lo lee como cualquier cadena de consulta: request.GET.get("size", ""), con un valor predeterminado para la página simple.

Después de una búsqueda, la página se vuelve a cargar y el cuadro queda vacío. Para conservar las palabras, pásalas de vuelta a la plantilla y escríbelas en el value del campo de entrada.

challenge icon

Desafío

Fácil

Añade una búsqueda a la página de inicio:

  • Encima de la lista en event_list.html, un formulario que envíe su campo en la URL: un campo de entrada llamado q y un botón Search.
  • En event_list, muestra solo los eventos cuyo título contenga q, sin distinguir entre mayúsculas y minúsculas.
  • El cuadro conserva lo que se buscó.

Pulsa Run y busca jazz.

Pruébalo tú mismo

from django.shortcuts import get_object_or_404, render

from .models import Event


def event_list(request):
    events = Event.objects.all()
    return render(request, "events/event_list.html", {"events": events})


def event_detail(request, pk):
    event = get_object_or_404(Event, pk=pk)
    return render(request, "events/event_detail.html", {"event": event})

Todas las lecciones de Formularios

Practica por tu cuenta: Playground de Django