Desarrollo de Ecommerce con Django (parte 4)

Dentro de este cuarto y último tutorial se cubrirán los siguientes puntos:

Procesar nuevo pedido.
Mostrar histórico de pedidos.
Filtrar productos por categoría.

1. Procesar un nuevo pedido

Dentro del paquete “models” de la aplicación store, crea un…


This content originally appeared on DEV Community and was authored by Gabriel Villacis

Dentro de este cuarto y último tutorial se cubrirán los siguientes puntos:

Procesar nuevo pedido.
Mostrar histórico de pedidos.
Filtrar productos por categoría.

1. Procesar un nuevo pedido

  • Dentro del paquete "models" de la aplicación store, crea un archivo Python: "pedido.py" y agrega la siguiente definición para el modelo:
from django.db import models
from django.contrib.auth.models import User
from .producto import Producto

class Pedido(models.Model):
    usuario = models.ForeignKey(User, on_delete=models.CASCADE)
    producto = models.ForeignKey(Producto, on_delete=models.CASCADE)
    cantidad = models.PositiveIntegerField(default=1)
    total = models.DecimalField(max_digits=12, decimal_places=2)
    fecha_registro = models.DateTimeField(auto_now_add=True)
    fecha_ult_act = models.DateTimeField(auto_now=True)

    def __str__(self) -> str:
        return f'{self.id}'

    class Meta:
        db_table = 'st_pedidos'
        verbose_name = 'Pedido'
        verbose_name_plural = 'Pedidos'`

El modelo Pedido se utilizará para registrar los nuevos pedidos.

  • A continuación, debemos crear la "URL" a través de la cual se procesará el registro de cada pedido. Agrega el siguiente código a tu archivo urls.py de la aplicación "store":
urlpatterns = [
  # Otras rutas
  path('pedidos/', views.crear_pedido, name='crear_pedido')
]
  • Una vez que la ruta esté creada vamos a asociarla con su función de vista correspondiente, para ello crearemos la función crear_pedido en el archivo views.py de la aplicación "store":
def crear_pedido(request):    
    try:    
        datos_pedido = json.loads(request.body)
        producto_id = int(datos_pedido.get('producto_id'))
        cantidad = int(datos_pedido.get('cantidad'))

        producto = Producto.objects.get(pk=producto_id)

        nuevo_pedido = Pedido(  usuario=request.user,
                                producto=producto,
                                cantidad=cantidad,
                                total=cantidad*producto.precio)

        nuevo_pedido.save()

        return JsonResponse({'success': True, 'message': f'Se registró el pedido exitosamente. Pedido # {nuevo_pedido.id}'}, status=200)        

    except Exception as ex:
        return JsonResponse({'success': False, 'message': str(ex)}, status=500)

  • Posteriormente realizaremos la petición http vía ajax que se encargará de consumir la ruta de creación de pedido al momento que el usuario desee ingresar un nuevo pedido. Para ello, vamos a crear un nuevo archivo estático de javascript dentro de la carpeta static/js, el archivo podría llamarse pedido.js.

Dentro del archivo, procedemos a registrar la siguiente función:


function crearPedido = (producto_id, cantidad, csrf_token) => {

    const jsonData= {
        producto_id: producto_id,
        cantidad: cantidad
    }

    axios.post('/pedidos/', jsonData, {
        headers: {
            'X-CSRFToken': csrfToken
        }
    })
    .then(response => {
        alert(response.data.message);
    })
    .catch(error => {
        if (error.response) {           
            alert(error.response.data.message);
        }else {
            alert(error.message);
        }
    });


This content originally appeared on DEV Community and was authored by Gabriel Villacis


Print Share Comment Cite Upload Translate Updates
APA

Gabriel Villacis | Sciencx (2024-07-15T23:29:58+00:00) Desarrollo de Ecommerce con Django (parte 4). Retrieved from https://www.scien.cx/2024/07/15/desarrollo-de-ecommerce-con-django-parte-4/

MLA
" » Desarrollo de Ecommerce con Django (parte 4)." Gabriel Villacis | Sciencx - Monday July 15, 2024, https://www.scien.cx/2024/07/15/desarrollo-de-ecommerce-con-django-parte-4/
HARVARD
Gabriel Villacis | Sciencx Monday July 15, 2024 » Desarrollo de Ecommerce con Django (parte 4)., viewed ,<https://www.scien.cx/2024/07/15/desarrollo-de-ecommerce-con-django-parte-4/>
VANCOUVER
Gabriel Villacis | Sciencx - » Desarrollo de Ecommerce con Django (parte 4). [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/07/15/desarrollo-de-ecommerce-con-django-parte-4/
CHICAGO
" » Desarrollo de Ecommerce con Django (parte 4)." Gabriel Villacis | Sciencx - Accessed . https://www.scien.cx/2024/07/15/desarrollo-de-ecommerce-con-django-parte-4/
IEEE
" » Desarrollo de Ecommerce con Django (parte 4)." Gabriel Villacis | Sciencx [Online]. Available: https://www.scien.cx/2024/07/15/desarrollo-de-ecommerce-con-django-parte-4/. [Accessed: ]
rf:citation
» Desarrollo de Ecommerce con Django (parte 4) | Gabriel Villacis | Sciencx | https://www.scien.cx/2024/07/15/desarrollo-de-ecommerce-con-django-parte-4/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.