Update day 16
Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
parent
15ae6ed3da
commit
33e2f1b72f
@ -433,6 +433,50 @@ Ya lo podemos cambiar por tareas.
|
|||||||
|
|
||||||
## 16.7. - Configurar la vista de Detalle
|
## 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/<int:pk>', DetalleTarea.as_view(), name='tarea')
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
En el nombre del path se ha incluido `<int:pk>` que es el número intenger de la Primary Key.
|
||||||
|
|
||||||
|
En el html creado añadimos lo siguiente:
|
||||||
|
```html
|
||||||
|
<h1>Tarea: {{object}} </h1>
|
||||||
|
```
|
||||||
|
|
||||||
|
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.8. - Crear Links a Detalle
|
||||||
|
|
||||||
## 16.9. - Agregar nueva tarea
|
## 16.9. - Agregar nueva tarea
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
<h1>Tarea: {{tarea}} </h1>
|
||||||
|
|
@ -1,7 +1,8 @@
|
|||||||
from django.urls import path
|
from django.urls import path
|
||||||
from .views import ListaPendientes
|
from .views import ListaPendientes, DetalleTarea
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', ListaPendientes.as_view(), name='pendientes')
|
path('', ListaPendientes.as_view(), name='pendientes'),
|
||||||
|
path('tarea/<int:pk>', DetalleTarea.as_view(), name='tarea')
|
||||||
]
|
]
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.views.generic.list import ListView
|
from django.views.generic.list import ListView
|
||||||
|
from django.views.generic.detail import DetailView
|
||||||
from .models import Tarea
|
from .models import Tarea
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
@ -8,3 +9,9 @@ from .models import Tarea
|
|||||||
class ListaPendientes(ListView):
|
class ListaPendientes(ListView):
|
||||||
model = Tarea
|
model = Tarea
|
||||||
context_object_name = 'tareas'
|
context_object_name = 'tareas'
|
||||||
|
|
||||||
|
|
||||||
|
class DetalleTarea(DetailView):
|
||||||
|
model = Tarea
|
||||||
|
context_object_name = 'tarea'
|
||||||
|
template_name = 'base/tarea.html'
|
||||||
|
BIN
python-total/img/dia16_24.png
Normal file
BIN
python-total/img/dia16_24.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
python-total/img/dia16_25.png
Normal file
BIN
python-total/img/dia16_25.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Loading…
Reference in New Issue
Block a user