diff --git a/python-total/dia_16/README.md b/python-total/dia_16/README.md index caa2fdc..9a93bc3 100644 --- a/python-total/dia_16/README.md +++ b/python-total/dia_16/README.md @@ -900,8 +900,46 @@ class PaginaRegistro(FormView): ## 16.18. - Barra de búsquedas +Para las pruebas necesitamos varias tareas que contengan una misma palabra. +Entonces, en tarea_list.html tenemos que añadir otro form. Como es para obtener información pondremos el método get: +```html +
+ {% csrf_token %} + + +
+``` + +Ahora en views.py vamos a incorporar otro filtro en la clase ListaPendientes, dentro de get_context_data. Hacemos una variable para guardar la cerca que se ingrese en el formulario anterior y antes de devolver el contexto, cambiaremos el filtro del contexto para chequear el título contengan el valor, con un if para que se ejecute si la variable es verdadera: +```python +valor_buscado = self.request.GET.get('area-buscar') or '' +if valor_buscado: + context['tareas'] = context['tareas'].filter( + titulo__incontains=valor_buscado) +``` + +Ahora ya funciona, he buscado vaca: + +![](../img/dia16_39.png) + +Para mantener la palabra buscada en el formulario debe hacer algún cambio más. Tenemos que añadir esta línea a la anterior función, antes del return: +```python +context['valor_buscado'] = valor_buscado +``` + +Y al input del formulario, el de la caja de búsqueda, tenemos que añadir el valor de la variable creada: +```html +value="{{valor_buscado}}" +``` + +Ahora ya se queda la palabra: + +![](../img/dia16_40.png) + ## 16.19. - Un estilo para todas las vistas + + ## 16.20. - Estilo general ## 16.21. - Estilo de barra superiores diff --git a/python-total/dia_16/mi_web/src/proyecto/base/templates/base/tarea_list.html b/python-total/dia_16/mi_web/src/proyecto/base/templates/base/tarea_list.html index dc37b6d..259b98b 100644 --- a/python-total/dia_16/mi_web/src/proyecto/base/templates/base/tarea_list.html +++ b/python-total/dia_16/mi_web/src/proyecto/base/templates/base/tarea_list.html @@ -17,6 +17,13 @@ Crear nueva tarea +
+ {% csrf_token %} + + +
+ + diff --git a/python-total/dia_16/mi_web/src/proyecto/base/views.py b/python-total/dia_16/mi_web/src/proyecto/base/views.py index 7bcdff5..2b9a658 100644 --- a/python-total/dia_16/mi_web/src/proyecto/base/views.py +++ b/python-total/dia_16/mi_web/src/proyecto/base/views.py @@ -50,6 +50,12 @@ class ListaPendientes(LoginRequiredMixin, ListView): context['tareas'] = context['tareas'].filter(usuario=self.request.user) context['count'] = context['tareas'].filter(completo=False).count() + valor_buscado = self.request.GET.get('area-buscar') or '' + if valor_buscado: + context['tareas'] = context['tareas'].filter( + titulo__icontains=valor_buscado) + context['valor_buscado'] = valor_buscado + return context diff --git a/python-total/img/dia16_39.png b/python-total/img/dia16_39.png new file mode 100644 index 0000000..5e4f3ba Binary files /dev/null and b/python-total/img/dia16_39.png differ diff --git a/python-total/img/dia16_40.png b/python-total/img/dia16_40.png new file mode 100644 index 0000000..29ec0e2 Binary files /dev/null and b/python-total/img/dia16_40.png differ
Elementos