ed92991872
Agent-Logs-Url: https://github.com/dsaub/proyecto-final/sessions/49df17c8-213a-4e23-adfe-465a0104f6a3 Co-authored-by: dsaub <54474838+dsaub@users.noreply.github.com>
51 lines
1.6 KiB
Markdown
51 lines
1.6 KiB
Markdown
# `add_to_cart`
|
|
|
|
**Archivo:** `tienda/views.py`
|
|
**URL:** `/tienda/carrito/agregar/<product_id>/`
|
|
**Tipo:** Vista pública
|
|
|
|
## Descripción
|
|
|
|
Agrega un producto al carrito del usuario (autenticado o anónimo). Antes de añadir, cancela cualquier reserva de stock activa para que el inventario se recalcule limpiamente.
|
|
|
|
- Si el producto ya existe en el carrito, incrementa la cantidad.
|
|
- Valida que la cantidad resultante no supere el stock disponible.
|
|
- Si la petición incluye la cabecera `X-Requested-With: XMLHttpRequest`, devuelve una respuesta JSON en lugar de redirigir.
|
|
|
|
## Firma
|
|
|
|
```python
|
|
def add_to_cart(request: HttpRequest, product_id: int):
|
|
```
|
|
|
|
## Parámetros
|
|
|
|
| Nombre | Tipo | Descripción |
|
|
|--------------|---------------|----------------------------------|
|
|
| `request` | `HttpRequest` | Petición HTTP de Django. |
|
|
| `product_id` | `int` | ID del producto a agregar. |
|
|
|
|
## Parámetros POST
|
|
|
|
| Campo | Tipo | Por defecto | Descripción |
|
|
|------------|-------|-------------|--------------------------|
|
|
| `quantity` | `int` | `1` | Cantidad a agregar. |
|
|
|
|
## Redirecciones
|
|
|
|
| Caso | Destino |
|
|
|---------------------------------|--------------------------|
|
|
| Éxito (no AJAX) | `view_cart` |
|
|
| Stock insuficiente / cantidad inválida | `producto` (detalle del producto) |
|
|
| Producto no encontrado | `index` |
|
|
|
|
## Respuesta AJAX
|
|
|
|
```json
|
|
{
|
|
"success": true,
|
|
"cart_count": 3,
|
|
"message": "..."
|
|
}
|
|
```
|