CRUD en Django, crear la página de detalle o show

Vamos a crear uno de los procesos CRUDs fundamentales en nuestra aplicación en Django, que es la de mostrar una página de detalle (el Read o show); para ello, vamos a necesitar hacer 3 pasos

  1. Crear la función en la vista, views.py de nuestra aplicación.
  2. Crear la ruta a nivel de la aplicación.
  3. Crear el template.

Ya con esto estamos listos.

Crear la función en la vista, views.py de nuestra aplicación

def show(request,pk):
   product = get_object_or_404(Product, id=pk)
   
   """try:
       product = Product.objects.get(pk=pk)
   except Product.DoesNotExist:
       #return HttpResponse(status=404)
       return HttpResponseNotFound()"""

   return render(request, 'show.html', { 'product' : product })

La función anterior lo único que hace es buscar un registro (Producto en este caso) dada la pk; para eso empleamos la función llamada get_object_or_404, que permite buscar un registro, si no existe devuelve una página de 404; para esto, podemos también hacerlo de manera manual:

try:
       product = Product.objects.get(pk=pk)
   except Product.DoesNotExist:
       #return HttpResponse(status=404)
       return HttpResponseNotFound()

Que busca un registro, y si no existe devuelve una excepción de tipo 404, pero todo eso lo hace por nosotros get_object_or_404.

Crear la ruta a nivel de la aplicación

Para la ruta, la creamos, con un parámetro llamado pk de tipo entero y le damos un nombre.

app_name="gestion"
urlpatterns = [
   path('',views.index),
   path('detail/<int:pk>',views.show, name="show"),
]

Crear el template

En nuestro template, mostramos el contenido, lo normal, el titulo, precio, categoría y descripción:

{% extends "base.html" %}
{% block title %}
   {{product.title}}
{% endblock title %}
{% block content %}
<h1>{{product.title}}</h1>
   <p>{{product.price}}$</p>
   <p>{{product.category.title}}</p>
   <p>{{product.description}}</p>
   
{% endblock %}

Conclusión

Ya con esto, podemos generar un ciclo básico para mostrar el contenido de un registro, en resumen, creamos una ruta para pasarle un ID, buscamos el registro y lo mostramos en un template.

Acepto recibir anuncios de interes sobre este Blog.

Vamos a generar una pagina o template de detalle para mostrar el detalle de un producto en nuestra aplicacion en Django, y conocerás como crear rutas con parámetros y la función get_object_or_404.

- Andrés Cruz

In english

) )