Update day 16

Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
Manuel Vergara 2023-05-27 17:33:50 +02:00
parent 63ea50d53c
commit 374f2e5276
5 changed files with 51 additions and 0 deletions

View File

@ -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
<form method="get" action="">
{% csrf_token %}
<input type="text" name="area-buscar">
<input type="submit" value="Buscar">
</form>
```
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

View File

@ -17,6 +17,13 @@
<a href="{% url 'crear-tarea' %}">Crear nueva tarea</a>
<form method="get" action="">
{% csrf_token %}
<input type="text" name="area-buscar" value="{{valor_buscado}}">
<input type="submit" value="Buscar">
</form>
<table>
<tr>
<th>Elementos</th>

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB