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. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscr铆bete

Termina en:

14 D铆as
14 Hrs
22 Min
48 Seg
Curso de Django

Curso de Django

Luis Mart铆nez

Luis Mart铆nez

Vistas Basadas en Clases en Django

14/32
Recursos

Las vistas son un componente crucial en Django, permitiendo la interacci贸n entre las URLs y la l贸gica de negocio.

驴C贸mo crear vistas en Django?

Para mantener el c贸digo organizado, es ideal ubicar las vistas en un archivo dedicado. Si tienes vistas definidas en el archivo de URLs, el primer paso es moverlas al archivo views.py. Aseg煤rate de renombrar las vistas si tienen nombres duplicados y de importar las dependencias necesarias, como HttpResponse.

驴C贸mo manejar vistas basadas en funciones?

Las vistas basadas en funciones (FBV) son simples de implementar y adecuadas para l贸gica no compleja. Reciben el objeto request y devuelven un HttpResponse. Aqu铆 un ejemplo b谩sico:

from django.http import HttpResponse

def MyTestView(request):
    return HttpResponse("Hello, this is a test view")

驴C贸mo explorar el objeto request en Django?

El objeto request en Django contiene informaci贸n relevante sobre la solicitud HTTP. Para explorar sus atributos, puedes utilizar el shell de Django:

from django.http import HttpRequest

request = HttpRequest()
print(request.__dict__)

Esto te permitir谩 inspeccionar las propiedades del request, como el m茅todo HTTP, el usuario autenticado, entre otros.

驴Por qu茅 usar vistas basadas en clases?

Las vistas basadas en clases (CBV) facilitan la reutilizaci贸n de c贸digo y la modularidad. Son m谩s adecuadas para l贸gica compleja y permiten utilizar m茅todos integrados de Django. Para convertir una vista basada en funciones a una basada en clases:

  1. Define una clase que herede de una vista gen茅rica de Django.
  2. Implementa m茅todos como get_context_data para manejar el contexto.

Aqu铆 un ejemplo de una CBV:

from django.views.generic import TemplateView

class CarListView(TemplateView):
    template_name = "car_list.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['cars'] = Car.objects.all()
        return context

驴C贸mo conectar una vista basada en clases a una URL?

Para conectar una CBV a una URL, utiliza el m茅todo as_view() en el archivo de URLs:

from django.urls import path
from .views import CarListView

urlpatterns = [
    path('cars/', CarListView.as_view(), name='car-list')
]

驴C贸mo evitar errores comunes al importar vistas?

Aseg煤rate de importar las vistas desde el m贸dulo correcto. Utiliza el autocompletado del editor con precauci贸n y verifica los importes en la documentaci贸n de Django.

驴Cu谩les son las diferencias clave entre FBV y CBV?

  • FBV: Simplicidad y facilidad de implementaci贸n para tareas b谩sicas.
  • CBV: Modularidad y reutilizaci贸n, ideal para l贸gica compleja y uso de m茅todos predefinidos.

Aportes 6

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Profe Luis, una recomendaci贸n o simplemente un comentario que considero importante: Una vez digas que resolvamos algo en una clase como mejora a la soluci贸n, pues debe resolverla usted tambi茅n y mostrarla r谩pidamente en la clase posterior, de tal forma que aporte al conocimiento y mas importante a煤n que la aplicaci贸n que vemos en pantalla cuando explica no quede desactualizada y mejore la experiencia al estudiante en el aprendizaje. En este caso en particular mira que el car\_list todav铆a lo obtiene de una lista de diccionarios quemada y no de la BD sqlite como ya deber铆a ir el ejercicio. Muchas gracias y disculpe el atrevimiento
Mi recomendaci贸n aqu铆 es que se acostumbren a utilizar clases, ya que en un entorno empresarial organizado siempre las vamos a ver entonces es importante irnos familiarizando con estas mismas.
隆Hola! Estaba viendo esta clase y me quedaron dudas de como django encontraba el contexto para renderizar con la plantilla, 驴Por qu茅 llamarlo get\_context\_data? La respuesta es porque al crear la clase CarListView, esta hereda de TemplateView, que a su vez, hereda de TemplateResponseMixin, ContextMixin y View, ContextMixin es la clase que tiene ese get\_context\_data y le dice que renderizar ![](https://static.platzi.com/media/user_upload/image-26d4fb44-9410-4f7e-916e-9f16ebb9403d.jpg)
Aunque soy nuevo en Django, hoy vi la clase y me quedaron dudas sobre c贸mo pasar un par谩metro a trav茅s del request. Al parecer, es necesario crear una funci贸n dentro de la clase. Pienso que cada clase tendr铆a varias funciones asociadas, y estas se enviar铆an, en los casos respectivos a diferentes templates. ```python class AuthorProfileView(TemplateView): template_name = "my_first_app/author_profile.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) author_id = self.kwargs.get('id') profile = Author.objects.get(id=author_id) context['author_profile'] = profile return context ```class AuthorProfileView(TemplateView): template\_name = "my\_first\_app/author\_profile.html" def get\_context\_data(self, \*\*kwargs): context = super().get\_context\_data(\*\*kwargs) author\_id = self.kwargs.get('id') profile = Author.objects.get(id=author\_id) context\['author\_profile'] = profile return context
Para poder recibir los valores pasados a la URL como en el caso de path("\<str:model>", CarDetailView.as\_view()) en el CarDetailView se recibe as铆 en el m茅todo get\_context\_data `class`` ``CarDetailView``(``TemplateView``):聽 聽 template_name = "myapp/car_detail.html"` `聽 聽 ``def`` get_context_data(``self``, **``kwargs``):聽 聽 聽 聽 return {聽 聽 聽 聽 "car": [car for car in Car.objects.filter(``title``=kwargs["model"])][0]聽 聽 }`
## Convertidores de ruta [露](https://docs.djangoproject.com/en/5.0/topics/http/urls/#path-converters "Enlace permanente a este titular") Los siguientes convertidores de ruta est谩n disponibles de forma predeterminada: * `str`- Coincide con cualquier cadena que no est茅 vac铆a, excepto el separador de ruta `'/'`. Este es el valor predeterminado si no se incluye un convertidor en la expresi贸n. * `int`- Coincide con cero o cualquier entero positivo. Devuelve un `int`. * `slug`- Coincide con cualquier cadena de caracteres que conste de letras o n煤meros ASCII, adem谩s de los caracteres de gui贸n bajo y guion bajo. Por ejemplo, `building-your-1st-django-site`. * `uuid`- Coincide con un UUID formateado. Para evitar que varias URL se asignen a la misma p谩gina, se deben incluir guiones y las letras deben estar en min煤scula. Por ejemplo, `075194d3-6885-417e-a8a8-6c931e272f00`. Devuelve una [`UUID`](https://docs.python.org/3/library/uuid.html#uuid.UUID "(en Python v3.12)")instancia.