diff --git a/python-total/dia_16/README.md b/python-total/dia_16/README.md index 0460aa4..7fcb4a3 100644 --- a/python-total/dia_16/README.md +++ b/python-total/dia_16/README.md @@ -433,6 +433,50 @@ Ya lo podemos cambiar por tareas. ## 16.7. - Configurar la vista de Detalle +En base/views vamos a importar la función para los detalles y crearemos una clase más. Quedando el fichero así: +```python +from django.shortcuts import render +from django.views.generic.list import ListView +from django.views.generic.detail import DetailView +from .models import Tarea + +# Create your views here. + +class ListaPendientes(ListView): + model = Tarea + context_object_name = 'tareas' + +class DetalleTarea(DetailView): + model = Tarea +``` + +Y necesitaremos crear otro fichero html como plantilla. Por defecto será tarea_detail.html, pero luego podemos ver como cambiar el nombre. Tendremos que incluir en base/urls.py el import y el path de la tarea, quedando el documento así: +```python +from django.urls import path +from .views import ListaPendientes, DetalleTarea + +urlpatterns = [ + path('', ListaPendientes.as_view(), name='pendientes'), + path('tarea/', DetalleTarea.as_view(), name='tarea') +] +``` + +En el nombre del path se ha incluido `` que es el número intenger de la Primary Key. + +En el html creado añadimos lo siguiente: +```html +

Tarea: {{object}}

+``` + +Esto hará que tenga el nombre de la tarea en cada url con un número de primary key válido: + +![](../img/dia16_24.png) + +![](../img/dia16_25.png) + +Ahora podemos personalizar el object en base/views.py añadiendo a nuestra clase context_object_name con tarea y cambiando la palabra object por tarea del html. +Ahora vamos a personalizar el nombre del html de tarea_details.html por tarea.html y lo vamos a incluir en base/views.py, en la clase DetalleTarea, el template_name con la ubicación 'base/tarea.html'. + ## 16.8. - Crear Links a Detalle ## 16.9. - Agregar nueva tarea diff --git a/python-total/dia_16/mi_web/src/proyecto/base/templates/base/tarea.html b/python-total/dia_16/mi_web/src/proyecto/base/templates/base/tarea.html new file mode 100644 index 0000000..0782c52 --- /dev/null +++ b/python-total/dia_16/mi_web/src/proyecto/base/templates/base/tarea.html @@ -0,0 +1,2 @@ +

Tarea: {{tarea}}

+ diff --git a/python-total/dia_16/mi_web/src/proyecto/base/urls.py b/python-total/dia_16/mi_web/src/proyecto/base/urls.py index 3c7038e..b899125 100644 --- a/python-total/dia_16/mi_web/src/proyecto/base/urls.py +++ b/python-total/dia_16/mi_web/src/proyecto/base/urls.py @@ -1,7 +1,8 @@ from django.urls import path -from .views import ListaPendientes +from .views import ListaPendientes, DetalleTarea urlpatterns = [ - path('', ListaPendientes.as_view(), name='pendientes') + path('', ListaPendientes.as_view(), name='pendientes'), + path('tarea/', DetalleTarea.as_view(), name='tarea') ] 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 dfae1fd..da92ce4 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 @@ -1,5 +1,6 @@ from django.shortcuts import render from django.views.generic.list import ListView +from django.views.generic.detail import DetailView from .models import Tarea # Create your views here. @@ -8,3 +9,9 @@ from .models import Tarea class ListaPendientes(ListView): model = Tarea context_object_name = 'tareas' + + +class DetalleTarea(DetailView): + model = Tarea + context_object_name = 'tarea' + template_name = 'base/tarea.html' diff --git a/python-total/img/dia16_24.png b/python-total/img/dia16_24.png new file mode 100644 index 0000000..5ebb666 Binary files /dev/null and b/python-total/img/dia16_24.png differ diff --git a/python-total/img/dia16_25.png b/python-total/img/dia16_25.png new file mode 100644 index 0000000..3af31d4 Binary files /dev/null and b/python-total/img/dia16_25.png differ