DJANGO - CONSTRUIR VISTA DE DETALLE

En esta sesión demostramos cómo construir una vista de detalle en una aplicación Django, usando un argumento capturado desde la URL como el identificador del objeto a consultar, cómo realizar validaciones básicas en el método de la vista y mostrar los datos a través de una plantilla.

Cargando video...

NOTA: Solo puedes ver una versión limitada del video a baja resolución, si quieres ver la versión completa por favor regístrate y obtén alguno de nuestros planes!

Descripción del Vídeo

Construiremos de manera sencilla la vista de detalle para la aplicación ejemplo de encuestas, incluyendo:
Obtener la pregunta seleccionada desde el modelo
Acceder a las opciones relacionadas a dicha pregunta
Validar que existe el ID de pregunta seleccionada, y generar una excepción de manera apropiada en caso de ser necesario (una "página no encontrada")

Código disponible en:
https://github.com/networkfaculty/Fundamentos-Django/releases/tag/d-2.3.2


Agregar vista detalle en curso/encuestas/views.py

from django.shortcuts import get_object_or_404, render
from django.http import HttpResponse
from .models import Pregunta
from django.http import Http404
#def detalle(request, id_pregunta):
#try:
#pregunta = Pregunta.objects.get(pk=id_pregunta)
#except Pregunta.DoesNotExist:
#raise Http404('La pregunta no fue encontrada')
#return render(request, 'encuestas/detalle.html', {'pregunta': pregunta})
def detalle(request, id_pregunta):
pregunta = get_object_or_404( Pregunta, pk=id_pregunta )
return render(request, 'encuestas/detalle.html', {'pregunta': pregunta})

curso/encuestas/templates/encuestas/detalle.html

{{ pregunta.texto_pregunta }}

    {% for opcion in pregunta.opcion_set.all %}
  • {{ opcion.texto_opcion }}
  • {% endfor %}
Actualizar URL para vista detalle en curso/encuestas/urls.py from django.conf.urls import url from . import views urlpatterns = [ # ej: /encuestas/ url(r'^$', views.index, name='index'), # ej: /encuestas/5 url(r'^(?P\d+)/$', views.detalle, name='detalle'), # ej: /encuestas/5/resultados url(r'^(?P\d+)/resultados$', views.en_construccion, name='resultados'), # ej: /encuestas/5/votar url(r'^(?P\d+)/votar$', views.en_construccion, name='votar'), ]

Rating

Global

Ver video en playlist

comments powered by Disqus

Headshot of Juan Paredes

Juan Paredes

Ingeniero de Sistemas con amplia experiencia, especializado en el desarrollo y arquitectura de software.