Fundamentos de Django

1

¿Qué es Django?

2

¿Cómo instalar Django?

3

Entendiendo la arquitectura de Django

4

Qué es el patrón MVT (Model, View y Template)

La M en el Patrón: Modelo

5

Introducción a Modelos y Bases de Datos

Manejo Avanzado de Modelos y Bases de Datos

6

Gestión de Modelos y Bases de Datos en Django con SQLite

7

Inserción de Datos con Django

8

Actualización y Eliminación de Datos en Django

Relaciones y Asociaciones entre Modelos

9

Creación y Gestión de Relaciones entre Modelos en Django

10

Relaciones Muchos a Muchos (N:N) en Django

11

Relaciones Uno a Uno (1:1) en Django

12

Queries y Filtros en Django: Optimización y Estrategias Avanzadas

Configuración de URLs y Vistas Avanzadas

13

Gestión de URLs en Django: Configuración, Rutas y Mejores Prácticas

14

Vistas Basadas en Clases en Django

La T en el Patrón: Plantillas o Templates

15

Personalización de Interfaz con Plantillas en Django

Desarrollo de Aplicaciones en Django

16

Configuración del Proyectos en Django

17

Creación del Modelo para la Aplicación 'Products' en Django

18

Cómo Crear Migraciones de Datos en Django

19

Creación de la Aplicación 'Products' con Formularios en Django

20

Integracion de TailwindCSS en Django

21

Django Admin

22

Manejo de Sesiones en Django

23

Manejo de Órdenes en CoffeShop

24

Manejo de Pedidos en CoffeShop

25

Mixings en vistas basadas en clases

26

Agregar productos a la orden

Django Rest Framework

27

Django REST Framework

Despliegue de aplicaciones Django

28

Configurar PostgreSQL en AWS con Django

29

Variables de entorno en Django

30

¿Cómo usar Unit Testing en Django?

31

Debugging en Django

32

Desplegar aplicaciones de Django en AWS

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
7 Hrs
43 Min
27 Seg
Curso de Django

Curso de Django

Luis Martínez

Luis Martínez

Django Admin

21/32
Recursos

Explorar la funcionalidad del Django Admin es esencial para aprovechar al máximo el potencial de Django en la gestión de aplicaciones web.

¿Qué es el Django Admin?

Django Admin es una herramienta integrada en Django que permite administrar modelos y objetos a través de una interfaz web intuitiva y fácil de configurar.

¿Cómo accedemos al Django Admin?

Primero, asegúrate de que el proyecto de Django esté corriendo. Luego, accede a la URL “/admin”. Aparecerá una página de inicio de sesión con el título “Django Administration”.

¿Cómo creamos un superusuario?

Para acceder al admin, necesitas un superusuario. Detén el servidor y ejecuta el comando createsuperuser. Proporciona un nombre de usuario, correo electrónico y contraseña. Reinicia el servidor y usa estas credenciales para iniciar sesión en el admin.

¿Cómo registramos un modelo en el Django Admin?

  1. Abre el archivo admin.py dentro de tu aplicación.
  2. Crea una nueva clase que herede de admin.ModelAdmin.
  3. Importa tu modelo con from .models import Product.
  4. Registra el modelo usando admin.site.register(Product, ProductAdmin).

¿Cómo personalizamos la vista de lista en el Django Admin?

Puedes añadir campos a la lista de visualización usando list_display:

class ProductAdmin(admin.ModelAdmin):
    list_display = ('name', 'price')

Esto muestra los campos name y price en la lista de productos.

¿Cómo agregamos funcionalidad de búsqueda?

Añade el atributo search_fields en la clase del administrador:

class ProductAdmin(admin.ModelAdmin):
    search_fields = ('name',)

Esto permite buscar productos por nombre.

¿Cómo editamos y guardamos productos?

Desde la lista de productos, haz clic en un producto para abrir el formulario de edición. Realiza los cambios necesarios y selecciona una de las opciones de guardado.

¿Cómo añadimos imágenes a los productos?

  1. Asegúrate de tener un campo de imagen en tu modelo.
  2. Sube una imagen a través del formulario de edición.
  3. Configura las URLs para servir archivos estáticos agregando la configuración en urls.py:
from django.conf.urls.static import static
from django.conf import settings

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

¿Cómo administramos múltiples productos?

Selecciona varios productos usando los checkboxes y aplica acciones en masa, como eliminar.

¿Cómo configuramos la visualización de imágenes en la lista de productos?

Configura las URLs de los archivos estáticos y media para que Django sepa dónde encontrarlas. Asegúrate de importar y utilizar correctamente static y settings en tu archivo urls.py.

¿Cómo agregamos un nuevo campo al modelo?

Para agregar un nuevo campo, como la fecha de creación, modifica el modelo y actualiza la clase del administrador para mostrarlo en la lista:

class ProductAdmin(admin.ModelAdmin):
    list_display = ('name', 'price', 'created_at')

Aportes 15

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Gente **para limitar el tamaño de la imagen** utilizando TailwindCSS solo hay que hacer un cambio en el archivo **list\_product.html**. En el atributo **class** dentro de la etiqueta **img** cambiar la palabrita "**full**" por "**64**" y listo.
esta quedando muy bien: ![](https://static.platzi.com/media/user_upload/Screenshot%202024-09-27%20at%2010.00.30PM-ba26519f-ca8a-4745-9893-c839105bd121.jpg)
No pude hacer q funciona la carga de imagenes.. revise el video 1000 de veces y sigo igual
En mi caso la carga de la imagen funcionó muy bien desde la pagina de administración de Django. Pero desde el formulario que se creo para la aplicación no cargaba. Para solucionarlo agregue el atributo enctype="multipart/form-data" a el tag form en el archivo add\_product.html. ```html {% extends "base.html" %} {% block content %} <h1 class="text-3xl font-bold underline">Agregar Producto <form action="{% url "add_product" %}" method="post" enctype="multipart/form-data"> {% csrf_token %} {{form.as_p}} <button type="submit">Agregar</button> </fom> {% endblock content %} ```{% extends "base.html" %} {% block content %} \<h1 class="text-3xl font-bold underline">Agregar Producto\ \<form action="{% url "add\_product" %}" method="post" enctype="multipart/form-data"> {% csrf\_token %} {{form.as\_p}} \<button type="submit">Agregar\</button> \</fom> {% endblock content %}
reto cumplido, ademas agregue una atributo de imagen por url en el caso de no tiene del producto si en el caso de que no hay la foto local muestra una url ![](https://static.platzi.com/media/user_upload/image-1b08b78d-5839-4479-9060-ec74544495f3.jpg)
En mi caso particular, para conseguir que las tarjetas tuvieran un tamaño adecuado, cree un grid. Simplemente crea lo siguiente: `
` ` Contenido copiado de hyperui.dev` `
`
![](https://static.platzi.com/media/user_upload/image-f35d1c70-4b00-4f17-a505-308d40c1b6a4.jpg) ![](https://static.platzi.com/media/user_upload/image-59a05a2a-caae-4ba3-a6b8-55048bd26fd0.jpg) ![](https://static.platzi.com/media/user_upload/image-015c56f9-8738-4499-8a44-cc6c18425f6b.jpg)
Comparto mi admin, tomando en cuenta el decorador para registrar la app en el admin, entonces colocamos solo el decorador arriba de la clase admin de cada modelo."""Products admin.""" \# Djangofrom django.contrib import admin \# Modelsfrom products.models import Product \# Register your models here. @admin.register(Product) # Decorador para no utlizar admin.site.register(Product, ProductAdmin)class ProductAdmin(admin.ModelAdmin): """Product admin class.""" list\_display = ('name', 'description', 'available',) # Para el Listado de products list\_filter = ('description', 'available',) # Filtrar con un panel desde el lado derecho search\_fields = ('name', 'description', 'price',) # Filtra con un buscador readonly\_fields = ('created\_at',) # Muestra un campo y no lo permite editar list\_editable = ('available',) # Permite editar el campo desde el listado, debe estar en lista\_diplay y no debe ser FK ordering = ('description', 'name') # Ordena el listado list\_per\_page = 5 # Paginación en el listado date\_hierarchy = ('created\_at') # Muestra una busqueda por fecha desde listado Y agregue otros campos al admin para personalizacion del django-admin: ```js """Products admin.""" # Django from django.contrib import admin # Models from products.models import Product # Register your models here. @admin.register(Product) # Decorador para no utlizar admin.site.register(Product, ProductAdmin) class ProductAdmin(admin.ModelAdmin): """Product admin class.""" list_display = ('name', 'description', 'available',) # Para el Listado de products list_filter = ('description', 'available',) # Filtrar con un panel desde el lado derecho search_fields = ('name', 'description', 'price',) # Filtra con un buscador readonly_fields = ('created_at',) # Muestra un campo y no lo permite editar list_editable = ('available',) # Permite editar el campo desde el listado, debe estar en lista_diplay y no debe ser FK ordering = ('description', 'name') # Ordena el listado list_per_page = 5 # Paginación en el listado date_hierarchy = ('created_at') # Muestra una busqueda por fecha desde listado ```
Personalmente no me gusto este metodo de obtener imagenes, ya que altera el historico de GIT y eso puede llegar a ser molesto en un entorno productivo, en local no afectara tanto, pero siento que hace falta saber como al momento de cargar esas imagenes subirlo a otro sitio como un bucket S3 y poder cargar las imagenes por medio de urls
Agregar campo de fecha y hora para cada registro, el campo no se llenará en el formulario, la fecha y hora se asignarán automaticamente una vez creado el producto *     date = <u>models</u>.<u>DateTimeField</u>(*auto\_now\_add*=True, *null*=True, *blank*=True, *verbose\_name*='Fecha de Creación') Procedemos ha hacer la migraciones y a probar, si ya tenía registros, va que la fecha y hora en la que hiciste las migraciones
Profe una pregunta, por qué me aparece tan grande mis resultados? Cómo puedo hacer para dejarlo con el tamaño que aparece en su ejemplo?![](https://static.platzi.com/media/user_upload/image-8765cbdc-1672-452c-9112-6dfd4c66181f.jpg)![]()
Hola Luis! Podrias explicar un poco porque se agrega esta configuracion de las rutas de las imagenes al final de la lista? ```python ```
Por favor muestra como agregar editor de texto en ese descripción del producto. Agregar también campos, categoría, tags, comentarios del producto, calificación Gracias
que diferencia tiene registrarlo de la forma explicada en la clase, a registrar solo el modelo de la siguiente forma? admin.site.register(Product)
Otra forma de hacer el registro en el admin es con un decorador: `from .models import Product` `@admin.register(Product)` `class ProductAdmin(admin.ModelAdmin):` ` pass`