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

20-08-2021 - Andrés Cruz

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

Este material forma parte de mi curso y libro completo; puedes adquirirlos desde el apartado de libros y/o cursos.

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.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.

!Cursos a!

10$

En Udemy

Quedan 1 días!

Udemy

!Cursos desde!

4$

En Academia

Ver los cursos

!Libros desde!

1$

Ver los libros
¡Hazte afiliado en Gumroad!
!Web Alojada en Hostinger!