Curso y libro desarrollo web con Django 5 y Python 3 + integración con Vue 3, Bootstrap y Alpine.js
Este es el curso MÁS completo que encontrarás de Django 5, veremos de todo, desde aspectos básicos como las rutas, vistas, templates, modelos, manejo de formularios, validaciones, entre otros hasta aspectos más completos como Rest Api con token de autenticación y Django Rest Framework (y una app para consumir la misma desde Vue -proximamente-), paquetes imprecindibles Django Channels y mucho más, el detalle del curso lo puedes ver en la parte inferior de esta publicación y lo mejor, es que es una inversión para varios años ya que, de manera gratuita, mantendré el curso por varios años a las nuevas versiones y dando mayor soporte por Academia.
Tambien tengo recursos gratuitos para Django como un curso gratis para Django que veremos más adelante.
Comprar el Curso en Django 5
A continuación, te presendo algunas opciones para comprar el curso; comenzando por la opción con mejor calidad precio que sería en la app de Academia:
Precio mínimo:
$8.0
Condiciones:
Todo el curso de por vida y descarga individual
Un único pago para todo el curso
Actualizaciones más frecuentes que en Udemy para agregar más y más clases al curso.
En este curso vas a aprender a crear tus primeras aplicaciones web en Django framework empleando Python 3, junto con el lenguaje más famoso para este lenguaje de programación como lo es Python, te dejo una lista de reproducción sobre las introducciones al curso para que veas que es lo que vas a ver en el curso:
Qué puedes esperar del curso y que no
Vamos a tratar múltiples tecnologías en este curso, pero centrándonos en el framework de Django que es nuestro principal caso de interés, por lo tanto, emplearemos y explicaremos estas tecnologías relacionadas como Vue o Bootstrap en cualquiera de sus versiones hasta que sea necesario sin profundizar completamente en estas tecnologías relacionadas.
En este curso vamos a aprender desde cero a programar en nuestro framework Django, conocer el ecosistema que necesitamos que es básicamente contar con Python en la versión 3 o superior; instalar paquetes, emplear Django en conjunto con Bootstrap 4 o 5, Vue con Vue Cli, crear la Rest Api, emplear y configurar la app de Admin para la gestión o CRUD de nuestros modelos registrados y un largo etc.
Nos apoyaremos en la documentación oficial del framework que es excelente, muy extensa y para la parte introductoria la misma en buena medida la puedes consumir en español.
El curso se encuentra dividido en varias secciones, para ir desarrollando de a poco, haciendo pequeñas aplicaciones web tanto en Django, Vue Cli, conectándose con la Rest API que iremos mejorando progresivamente hasta mejorar nuestros conocimientos en este framework:
En definitiva, es un curso enorme que no te puedes perdes con más de 40 horas de contenido y agregando más curso de vez en cuando.
Para quién es este tutorial
Este libro está dirigido a cualquiera que quiera comenzar a desarrollar con Django; puede que vengas de otro framework o inclusive PHP; en ambos casos es una gran idea aprender de uno de los frameworks webs más avanzados y completos que podrás encontrar.
Para aquellos que quieran conocer el framework y que conozcan otros frameworks webs, pero no tienen los conocimientos necesarios para aventurarse en estos.
Para aquellas personas que quieran aprender algo nuevo, conocer sobre un framework que, aunque tiene mucha documentación, la mayoría está en inglés y al estar el framework en constante evolución, tiende a quedar desactualizada.
Para las personas que quieran mejorar una habilidad en el desarrollo web, que quiera crecer como desarrollador y que quiera seguir escalando su camino con otros frameworks similares a este.
Para aquellos que quieran aprender o mejorar una habilidad y con esto, aumentar sus posibilidades de empleo o para llevar un proyecto personal.
Por aquí tienes el listado completo de clases que vamos a cubrir en el libro y curso:
Introducción a Django
1 Introducción
2 Software necesario
3 Verificar el comando de acceso a Python 3 y Pip
Vamos a hacer unas pruebas para acceder a Python 3.
4 Preparar el entorno
Vamos a crear el ambiente virtual.
5 Instalar Django
Vamos a instalar el framework web.
6 Proyecto vs aplicación
Vamos a hablar la diferencia entre proyecto y aplicación en Django.
7 Estructura del proyecto
Vamos a hablar de la estructura del proyecto.
8 Hola Mundo
Vamos a crear un hola mundo, para ello, conoceremos cómo emplear una vista, definir rutas en la aplicación y cargar las rutas de la aplicación y la aplicación en el proyecto.
9 Línea de comandos en Django
Vamos a presentar algunos comandos importantes en Django.
10 MTV
Vamos a dar una presentación al MTV de Django.
11 Opcional: Seleccionar el intérprete de Python en VSC y/o crear venv
Vamos a configurar VSC para que reconozca los paquetes del proyecto.
12 Realizar preguntas
Primeros pasos con Python (Reforzamiento)
1 Introducción
2 Consola interactiva/consola de Python
Vamos a presentar como usar la consola de Python, ideal para hacer pruebas.
3 Archivos de Python
Vamos a conocer como crear los archivos para programar en Python.
4 Variables y tipo de datos
Vamos a conocer cómo emplear las variables y sus tipos de datos.
5 Operaciones matemáticas
Vamos a conocer cómo funcionan las operaciones matemáticas en Python.
6 Concatenación de String
Vamos a conocer cómo funcionan las concatenaciones de String en Python.
7 Casteos
Vamos a aprender a realizar casteos o conversión entre distintos tipos.
8 Listas
Vamos a aprender a trabajar con las listas.
9 Condicionales
Vamos a conocer el uso de los condicionales.
10 Ciclos
Vamos a conocer el uso de los ciclos while y for.
11 Funciones
Daremos los primeros pasos con las funciones en Python
12 Funciones parte 2
Daremos los primeros pasos con las funciones en Python
13 Diccionarios
Vamos a conocer el uso de los diccionarios.
14 Clases, Primeros pasos
Vamos a hablar sobre las clases, su propósito, importancia y características bases.
15 Clases, Primeras clases
Vamos a crear la primera clase y definir sus atributos y métodos.
16 Clases, Método constructor
Vamos a conocer como trabajar con los métodos constructores.
17 Clases, Herencia
Vamos a conocer cómo emplear la herencia de clases.
Crear una aplicación tipo CRUD
1 Introducción
2 Modelos
Vamos a crear los modelos principales con los cuales vamos a trabajar.
3 Reto: Crear modelo de comentario
Vamos a crear un modelo para los comentarios.
4 Introducción a las migraciones
Vamos a presentar las migraciones y crear las primeras migraciones y ejecutar en la base de datos.
5 Visualizar base de datos
Vamos a visualizar los datos de la base de datos y analizar los resultados.
6 Revertir migraciones
Vamos a aprender a revertir las migraciones.
7 Renderizar un template
Vamos a renderizar un template.
8 Pase de parámetros al template
Vamos a pasar parámetros al template.
9 Carpetas contenedoras para los templates
Vamos a mostrar cómo emplear carpetas para organizar los templates.
10 Shortcut, funciones de ayuda
Vamos a dar una presentación de las funciones de ayuda.
11 Formularios y manejo de las peticiones desde la vista/controlador
Vamos a aprender a crear un formulario de manera manual con HTML y usarlo desde la app en Django.
12 Crear un objeto modelo y registrar en la base de datos
Vamos a crear un registro en la base de datos mediante una instancia del modelo comentario.
13 Modelos para los formularios
Vamos a aprender a usar los FormModel.
14 Operaciones a la base de datos
Vamos a conocer algunas operaciones para interactuar con la base de datos que van a ser necesarias para poder hacer el CRUD.
15 Shell
Veremos cómo emplear la herramienta para interactuar con el proyecto.
16 CRUD: Listado
Vamos a crear el proceso CRUD para el listado.
17 CRUD: Editar
Vamos a crear el proceso CRUD para editar.
18 CRUD: Eliminar
Vamos a crear el proceso CRUD para eliminar.
19 Redirecciones
Vamos a conocer como hacer redirecciones.
20 Paginación
Vamos a crear un pull de registros paginados al igual que los enlaces de paginación en el template.
21 Encontrar o 404: Detalle
Vamos a aprender a capturar las excepciones que ocurren cuando un registro no existe.
22 Encontrar o 404: Listados
Vamos a aprender a capturar las excepciones que ocurren cuando un listado no existe.
23 Faker: Primeras pruebas
Vamos a aprender a generar datos de prueba.
24 Faker: Crear script
Vamos a crear el script para ejecutar el script creado anteriormente.
25 Publicar en Github
Django Admin
1 Introducción
Introducción
2 Presentación
Hablaremos un poco sobre la herramienta de Django Admin.
3 Crear superusuario
Vamos a crear un usuario superadministrador.
4 Agregar nuestras propias relaciones
Vamos a asignar el modelo de comentarios a Django Admin.
5 Personalizar opciones de consulta
Vamos a conocer algunos atributos para personalizar la gestión de alguna entidad en Django Admin.
6 Personalizar opciones de guardado
Vamos a conocer algunas opciones de guardado.
7 Registrar clases mediante un decorador
Vamos a conocer un decorador para registrar clases.
8 Registrar el modelo para los tipos y categorías
Vamos a crear la clase admin para los tipos y categorías.
9 Registrar el modelo para los elements
Vamos a crear la clase admin para los elementos.
10 Agrupar los campos de gestión, fields
Vamos a aprender a colocar campos en una sola línea para Django admin.
11 Agrupar los campos de gestión, fieldset
Vamos a conocer cómo emplear los fieldset para agrupar campos.
12 Personalizar campos del formulario
Vamos a hablar sobre cómo modificar campos de formulario.
13 Crear campos personalizables
Vamos a crear campos personalizables mediante funciones.
14 Opciones de guardado
Vamos a conocer cómo cambiar algunas opciones de guardado mediante propiedades.
15 Modelos en línea
Vamos a aprender a manejar los modelos en línea en base a la relación FK del mismo.
16 Personalizar métodos de gestión CRUD
Vamos a aprender a ejecutar código personalizado antes o después de una operación CRUD.
17 Validaciones personalizadas
Vamos a aprender a crear validaciones personalizadas.
18 Configurar la configuración regional (localización)
19 Crear el slug de los elementos automáticamente en Django admin
Vas a generar el slug de manera automática.
20 Tema y archivos estáticos CSS, JS...
Vamos a aprender a incluir archivos estáticos en Django Admin.
21 Publicar en Github
Publicar en Github
Formularios
1 Introducción
2 Presentación
Vamos a presentar los forms y modelForms en Django.
3 Form para los elementos
Vamos a crear un formulario para los elementos y compararlos con los de tipo ModelForm.
4 Vista para procesar el formulario
Vamos a crear la vista/controlador para procesar un formulario.
5 Reto: Crea un ModelForm para los elementos
Vamos a crear un modelForm para los elementos de manera demostrativa y compararlo con los formularios de Django.
6 Listado
Vamos a crear el listado para los elementos.
7 Validaciones: Introducción
Vamos a dar una introducción a las validaciones y crearemos una.
8 Mostrar los errores de validación
Vamos a aprender a mostrar los errores de manera individual.
9 Extra: Corrección de rutas
Vamos a corregir una advertencia con las rutas.
10 Validaciones personalizadas
Vamos a crear validaciones personalizadas para los formularios.
11 Referenciar los campos y labels del formulario individualmente
Vamos a dar un repaso para referenciar campos del formulario de manera individual.
12 Form Assets (Media class): Introducción
Vamos a dar una introducción a los widgets en Django.
13 Form Assets (Media class): Atributo widget
Vamos a aprender a personalizar los atributos en Django mediante los widgets.
14 Form Assets (Media class): Clase widget
Vamos a personalizar los campos de formulario mediante una clase.
15 Form Assets (Media class): Clase widget parte 2
Vamos a crear una clase personalizada sobrescribiendo el render para el renderizado del campo.
16 Form Assets (Media class): Tipos de campos
Vamos a conocer como variar entre tipos de campos HTML en Django.
17 Form Assets (Media class): Modificar atributos
Vamos a aprender a modificar los atributos de los campos.
18 Form Assets (Media class): Django widgets
Vamos a conocer cómo emplear los widgets que provee Django, como el de calendario y hora.
19 field group
Vamos a conocer mostrar todos los datos de un formulario con un solo atributo.
20 Publicar en github
Templates: Plantillas maestras, etiquetas y filtros
1 Introducción
2 Presentación
Vamos a hablar de lo que vamos a ver en esta sección y lo que hemos visto de los templates.
3 Template maestro
Vamos a conocer cómo heredar contenido de los templates.
4 Reutilizar plantillas desde otras aplicaciones
Vamos a aprender a reutilizar la plantilla maestra en otras plantillas.
5 Incluir templates o fragmentos
Vamos a aprender a trabajar con los fragmentos de templates sin parámetros.
6 Fragmentos de templates y parámetros
Vamos a conocer como pasar parametros en los fragmentos de templates.
7 Otros usos de los bloques en los templates
Vamos a conocer otras opciones de los bloques en Django.
8 Etiquetas lógicas: if y for, presentación
Vamos a conocer el uso de los condicionales y los for en Django Template.
9 Programar nuestras propias etiquetas
Vamos a aprender a programar nuestras propias etiquetas.
10 Filtros: Presentación
Vamos a realizar una presentación de los filtros.
11 Filtros: cut
Vamos a conocer el primer filtro que permite remover textos.
12 Filtros: date
Vamos a conocer un filtro para formatear las fechas.
13 Filtros: now
Vamos a conocer un filtro para obtener la fecha actual.
14 Filtros: lower
Vamos a conocer un filtro para convertir los textos a minúsculas.
15 Filtros: upper
Vamos a conocer un filtro para convertir los textos a mayúsculas.
16 Filtros: add
Vamos a conocer un filtro para sumar.
17 Filtros: with
Vamos a conocer un filtro para crear variables en el template.
18 Filtros: cycle
Vamos a conocer un filtro para imprimir un texto diferente por cada iteración.
19 Filtros: default
Vamos a conocer un filtro para dar un valor por defecto cuando el contenido es nulo o falso.
20 Filtros: length
Vamos a conocer un filtro para medir la longitud de un array o texto.
21 Filtros: safe
Vamos a conocer un filtro para imprimir contenido HTML que venga desde la vista.
22 Filtros: join
Vamos a conocer un filtro para convertir un array en texto separados por el carácter.
23 Filtros anidados
Vamos a aprender a anidar o emplear varios filtros en una sola operación.
24 Programar nuestros propios filtros
Vamos a aprender a crear nuestros propios filtros.
25 Cambiar de motor de plantilla - Jinja2
Vamos a hablar sobre el motor de Jinja 2 para emplearlo en lugar del de Django Template.
26 Publicar en Github
Trabajando con QuerySets
1 Introducción
2 Crear un objeto
Vamos a ver cómo crear un objeto y crear un registro.
3 Obtener un objeto
4 Actualizar un objeto
Vamos a ver cómo actualizar un registro en vez de crear.
5 Recuperando objetos
Vamos a ver cómo obtener un pull de registros.
6 Filtrar objetos
Vamos a conocer cómo emplear los filtros para agregar condiciones WHERE.
7 Excluir resultados
Vamos a aprender cómo excluir resultados.
8 Ordenar
Vamos a aprender a ordenar resultados.
9 Eliminación de objetos
Vamos a aprender a eliminar registros.
Crear una Api Rest con Django Rest Framework
1 Introducción
2 Presentación
Vamos a presentar DRF, su importancia y su uso básico.
3 Instalar paquete y configurar
Vamos a instalar DRF y crear una app en Django.
4 Definir serialización
Vamos a definir la presentación de los datos.
5 Definir viewset (view)
Vamos a crear la capa que se encarga de procesar la petición del usuario.
6 Rutas
Vamos a crear las rutas para la API.
7 Pruebas con la Rest Api
Vamos a realizar algunas pruebas con la rest api.
8 Problemas al momento de crear/actualizar un elemento
Vamos a hablar sobre el problema con las relaciones FKs al momento de crear un elemento.
9 Personalizar clases ViewSets
Vamos a crear un viewset personalizado para los elementos.
10 Habilitar la paginación
Vamos a habilitar la paginación para los listados.
11 many=true, relación inversa
Vamos a conocer cómo emplear la opción de many.
12 Métodos personalizados para las serializaciones
Vamos a conocer cómo crear columnas o atributos artificiales en la serialización.
13 Métodos personalizados para los viewset
Vamos a conocer cómo crear recursos personalizados en el viewset.
14 Métodos adicionales
Métodos adicionales
15 Métodos hooks en los viewsets
Hablaremos de cómo es posible personalizar los métodos para crear, actualizar y eliminar.
16 Autenticación: Presentación
Vamos a presentar el contenido que veremos para autenticar la rest api, los tipos y configuraciones.
17 Autenticación: Sesión y básica
Vamos a conocer cómo emplear la autenticación mediante sesión y básica.
18 Autenticación: Token: Configuración base
Vamos a comenzar las configuraciones para realizar la autenticación con tokens.
19 Autenticación: Token: Función login
Vamos a crear la función de login para generar el token.
20 Autenticación: Token: Función login
Vamos a crear la función de login para generar el token.
21 Configurar los CORS
Vamos a configurar los CORS para consumir la Rest Api en la siguiente sección desde la app en Vue.
22 Publicar en github
Sobre algunas secciones
1 Sobre algunas secciones
Aplicación con Vue 3, NaiveUI, consumir Api Rest
1 Introducción
2 Vue CLI
Vamos a instalar Vue CLI.
3 Crear el proyecto
Vamos a crear un proyecto con proyecto en Vue.
4 Instalar y configurar Vue Router
Vamos a instalar y configurar Vue Router
5 Instalar axios y primera petición
Vamos a instalar axios.
6 Crear un repositorio en git
Vamos a crear un repositorio con github.
7 Crear un listado de categorías
Vamos a crear una página de listado para las categorías.
8 Tarea: crear un listado de tipos
Tarea: crear un listado de tipos
9 Navegación entre páginas
Vamos a aprender a navegar entre páginas.
10 Sobre, Instalar, configurar y primeras pruebas con naive UI
Vamos a hablar sobre Componente de tabla para las categorías y tiposnaive UI.
11 Componente de tabla para las categorías y tipos
Vamos a crear un componente de tabla para nuestros listados.
12 Space: Contenedor
Vamos a crear un contenedor de tipo Space.
13 Layout: Esqueleto básico
Vamos a crear una estructura base de la web.
14 Menú: con componente menu
Vamos a crear el modelo de menú.
15 Menú: Establecer el RouterLink
Vamos a adaptar el menú para que funcione con un router-link.
16 Adaptar menú en un componente aparte
Vamos a crear un componente en Vue para el menú.
17 Menú: Opciones de listado dinámicas
Vamos a crear un listado con las categorías y tipos en la Rest Api.
18 Header para las categorías y tipos
Vamos a crear un header con un menú.
19 Botones para los RouterLink
Vamos a modificar los routerLink con un diseño de botón.
20 Integrar Tailwinds.css
Vamos a instalar Tailwind.css en en proyecto.
21 Adaptar detalles visuales
Adaptaremos ciertos detalles visuales con Tailwinds.
22 Listado de elementos
Vamos a crear el listado de elementos.
23 Extra: Agrupar rutas
Vamos a dar un mejor agrupado a las rutas.
24 Listado de elementos por categoría
Vamos a obtener un listado de elementos por categorías.
25 Tarea: Listado de elementos por tipo
Vamos a obtener un listado de elementos por tipos.
26 Extra: Introducción a sobrescribir el tema de NaiveUI
Vamos a conocer cómo sobrescribir el estilo.
27 Vista de detalle de los elementos
Vamos a crear la vista de detalle.
28 Publicar en git
Aplicación en Vue 3: CRUD y formularios
1 Introducción
2 Formulario para categorías, estructura inicial
Vamos a crear el esqueleto inicial para la creación.
3 Formulario para categorías, crear
Vamos a crear una categoría mediante un formulario en Vue.
4 Formulario para categorías, manejo de errores
Vamos a mostrar los errores del formulario.
5 Formulario para categorías, editar
Vamos a adaptar el proceso para editar un registro.
6 Tarea: Formulario para tipos
Vas a realizar el formulario de crear y editar para los tipos.
7 Formulario para los elementos, esquema inicial
Vamos a crear la estructura inicial para el formulario de elementos.
8 Formulario para los elementos, armar listados
Vamos a completar el formulario de elementos cargando los tipos y categorías desde la rest api.
9 Integrar CKEditor
Vamos a configurar el plugin anterior en el proyecto.
10 Habilitar el CSS de CKEditor
Vamos a habilitar el CSS para nuestro editor.
11 Publicar en git
Vue 3: Ajuste
1 Activar opciones del menú de categorías y tipos
Vamos a cargar los enlaces para la opción de categoría y tipos en los menús.
2 Acomodar fecha elementos
Vamos a dar formato a la fecha.
3 Redireccionar en Vue Router
Vamos a realizar redirecciones desde la definición de las rutas.
4 Cambios visuales
Vamos a trabajar en otros cambios visuales.
5 Múltiples router-views: Título en el base
Vamos a trabajar con múltiples router-views.
Vistas basadas en clases (CBV): Web de libros
1 Introducción
2 Crear proyecto y aplicación
Vamos a comenzar un nuevo proyecto y con esto la estructura base.
3 Crear modelo inicial
Vamos a crear el modelo inicial para la aplicación
4 Crear formulario inicial
Vamos a crear el formulario inicial para la aplicación.
5 Crear las primeras CBV para manejar el formulario y de éxito
Vamos a presentar algunas clases basadas en vistas, la de formulario y genérica.
6 UpdateView: Actualizar
Vamos a conocer la VBC para actualizar.
7 CreateView: Crear
Vamos a conocer la VBC para crear.
8 DeleteView: Borrar
DeleteView: Borrar
9 DetailView: Detalle
Vamos a conocer la VBC para el detalle.
10 IndexView: Listado
Vamos a conocer la VBC para el listado.
11 Publicar en git
Vistas basadas en clases (CBV): Autenticación
1 Introducción
2 LoginView: Vista para el login
Vamos a presentar la VBC para el login.
3 LogoutView: Vista para el logout
Vamos a presentar la VBC para cerrar sesión.
4 PasswordChangeView: Vista para cambiar la contraseña
Vamos a presentar la VBC para cambiar la contraseña.
5 PasswordChangeRest: Vista para cambiar restablecer la contraseña
Vamos a presentar la VBC para restablecer la contraseña.
6 Descargar, cualquier archivo existente
Descargar, cualquier archivo existente
Manejar archivos
1 Introducción
2 Presentación
Vamos a hablar del contenido a mostrar en esta sección.
3 Crear un proyecto y aplicación
Vamos a crear el proyecto y aplicación inicial.
4 CSV: Primeros pasos
Vamos a dar los primeros pasos para trabajar con los archivos csv.
5 CSV: Leer
Vamos a leer un archivo csv.
6 CSV: Leer, Diccionario
Vamos a leer un archivo csv.
7 CSV: Escribir un archivo
Vamos a aprender a escribir un archivo.
8 CSV: Escribir un archivo
Vamos a aprender a escribir un archivo.
9 Cerrar archivo y palabra reservada with
Vamos a repasar la importancia de cerrar los recursos con los cuales se está trabajando, como los archivos y el uso de la palabra reservada with.
10 XLSX: Crear aplicación
Vamos a crear la aplicación para este módulo.
11 XLSX: Leer
Vamos a aprender a leer un archivo.
12 XLSX: Escribir
Vamos a aprender a escribir un archivo.
13 Generar PDFs: Crear aplicación
Vamos a crear la aplicación para este módulo.
14 Generar PDFs: Generar un PDF a partir de una página HTML
Vamos a aprender a generar un PDF en base a un HTML.
15 Generar PDFs: Weasyprint otras opciones
Vamos a conocer como personalizar el tamaño, CSS y generar el PDF mediante un string HTML.
16 Generar PDFs: Generar un PDF a partir de un Canvas
Vamos a aprender a generar un PDF mediante un canvas con reportlab.
17 Círculos, rectángulos y líneas, colores...
Vamos a conocer algunas funciones para dibujar y cambiar colores entre otras características.
18 Descargar, cualquier archivo existente
Vamos a aprender a descargar cualquier archivo.
19 Descargar PDF, reporlab
Vamos a descargar el PDF generado por el plugin de reporlab.
Hablaremos sobre los websockets, servidores WSGI, ASGI, comunicacion sincrona y asincrona.
3 Crear proyecto e instalar dependencias
Vamos a crear el proyecto y la aplicación en Django.
4 Configurar proyecto y servidor con channels[daphne]
Vamos a configurar el servidor de channels
5 Crear modelos de ejemplo y data de ejemplo
Vamos a crear los modelos de mensajes y habitaciones y crear algo de data de prueba.
6 Consumer: Primeros pasos y creación
Vamos a crear nuestro primer consumer para recibir y enviar un mensaje.
7 Cliente (Vista y Template): Estructura base
Vamos a crear los templates y estructura base.
8 Cliente (Vista y Template): WebSocket, Abrir canal
Vamos a crear el JS para abrir el canal del WS.
9 Cliente (Vista y Template): WebSocket, Terminal implementación
Vamos a completar la implementación, enviar los mensajes y recibirlos.
10 Instalar Bootstrap 5
Vamos a instalar B5 en el proyecto.
11 Configurar aplicación con B5
Vamos a configurar el estilo de la aplicación empleando componentes de B5.
12 Publicar en github
Django Channels: Multiple Channels
1 Introducción
2 Presentación
3 Redis: MacOS
Vamos a instalar redis en MacOS empleando DBngin.
4 Channels Redis: Instalar
Vamos a instalar channels redis.
5 Channels Redis: Configurar
Vamos a configurar channels redis.
6 Modificaciones en la aplicación de chat: Primera parte
Vamos a realizar los cambios iniciales en la aplicación tipo chat para pasar los a múltiples channels.
7 Modificaciones en la aplicación de chat: Enviar mensajes
Vamos a enviar mensajes en múltiples channels.
8 Cambios en el cliente
Vamos a hacer los cambios en el cliente para mostrar los datos adicionales.
9 Convertir el consumer a código asíncrono
Convertiremos el consumer a tipo asíncrono.
10 Publicar en Github
DRF, Django Channels y Vue: Aplicación de mensajes de alertas
1 Introducción
2 Presentación
3 Instalaciones y configuraciones necesarias
Veremos las instalaciones en Django necesarias, que serían, DRF, Cors.
4 Modelo de alerta
Creamos el modelo de alertas.
5 Serialización de alerta
Creamos el serializer de alertas.
6 Autenticación mediante tokens
Vamos a crear el método de login para generar el token y obtener todos los alerts.
7 Verificar métodos anteriores
Vamos a probar los métodos anteriores.
8 Consumer
Creamos el consumer para las alertas.
9 Crear proyecto en Vue
Creamos un componente en Vue.
10 Instalar y configurar dependencias en Vue
Instalamos y configuramos las dependencias.
11 Componente Vue: Login
Vamos a crear el componente de Login para realizar el login y guardar el token en la cookie.
12 Componente Vue: Logout
Vamos a crear el componente de Logout para eliminar el token.
13 Componente para enviar y recibir mensajes
Vamos a implementar la primera parte del envío de mensajes.
14 Middleware para la autenticación por token en el consumer: Teoría
Vamos a conocer la estructura base sobre cómo funciona la autenticación en Django Channels y con esto, conocer los siguientes pasos que tenemos que seguir para autenticar el usuario.
15 Middleware para la autenticación por token en el consumer: Estructura base
Vamos a crear un middleware para la autenticación.
16 Middleware para la autenticación por token en el consumer
Vamos a terminar la implementación y realizando casos de prueba.
17 Mostrar mensajes de alerta por usuario
Vamos a mostrar los mensajes de alertas.
18 Diseño aplicado
Vamos a mostrar el diseño aplicado.
19 Selección de habitaciones
Vamos a implementar la selección de habitaciones para conectarse al canal.
20 Toques finales
Vamos a definir algunos detalles visuales.
21 Publicar en github
22 Extra: Bloquear el textarea al conectarse al websocket y mostrar mensaje de carga
Vamos a bloquear el textarea y mostrar un mensaje de conectando al entrar en el componente de mensajes y se este conectando al WS.
23 Extra: Destruir token de autenticación en el servidor
Vamos a destruir el token de autenticación al hacer el logout.
Pruebas Unitarias
1 Introducción
2 Presentación
3 Pruebas matemáticas
Vamos a conocer la esencia de las pruebas unitarias con un ejemplo.
4 Preparar entornos
Vamos a escoger el proyecto y configurarlo para esta sección.
5 ¿Qué vamos a probar?
Vamos a hablar sobre cómo vamos a llevar a cabo el resto de la sección.
6 Test Client en Django, primeros pasos
Vamos a conocer el client de Django para realizar peticiones HTTP a la app.
7 Test Client en Django mediante clases
Vamos a implementar la prueba mediante clases.
8 TestCase: setUp
Vamos a conocer cómo inicializar datos a nivel de las clases.
9 Herramientas para realizar las pruebas
Vamos a conocer algunos métodos de tipo assert.
10 Contexto de las pruebas unitarias
Hablaremos sobre el contexto o ambiente en el cual se realizan las pruebas.
https://www.desarrollolibre.net/blog/django/pruebas-unitarias-en-django
11 Crud de Comentarios: Index
Vamos a crear una prueba para el de index.
12 Repaso
Vamos a hacer un pequeño repaso del as clases anteriores.
13 Crud de Comentarios: Crear - Get
Vamos a realizar la prueba para el proceso de crear la petición de tipo get.
14 Crud de Comentarios: Crear - Post
Vamos a realizar la prueba para el proceso de crear la petición de tipo post y crear un comentario.
15 Reto: Crud de Comentarios: Actualizar
Vas a realizar la prueba para el proceso de actualizar la petición de tipo get y post.
16 Reto: Crud de Comentarios: Eliminar
Vamos a crear la prueba al momento de eliminar un comentario.
17 Otros métodos de aserción: assertRedirects
Vamos a conocer un método de tipo aserción con la cual evaluaremos la ruta a la cual se redirecciona.
18 Otros métodos de aserción: assertTemplateUsed
Vamos a conocer un método de tipo aserción con la cual verificamos el template usado.
19 Otros métodos de aserción: assertHTMLEqual
Vamos a conocer un método de tipo aserción con la cual evalúa la semántica de un contenido HTML.
20 Formularios: Campos
Vamos a crear una prueba para solamente los formularios en la cual, evaluaremos los campos que tienen que estar definidos.
21 Formularios: Válido
Vamos a crear la prueba para probar si el formulario es válido.
22 Formularios: Inválido
Vamos a crear la prueba para probar si el formulario es inválido.
23 Formularios: Crear
Vamos a crear la prueba para probar cuando el formulario guarda un nuevo registro.
24 Formularios: Actualizar
Vamos a crear la prueba para probar si el formulario actualiza un registro.
25 Mejorar la estructuras de archivos y carpetas de las pruebas
Vamos a cambiar la estructura de carpetas que tenemos en la aplicación.
26 Ejecutar determinadas pruebas
Vamos a conocer cómo ejecutar determinadas pruebas.
27 Api: Paginados
Vamos a crear una prueba para probar el recurso paginado de la api de comentarios.
28 Api: Detalle
Vamos a crear una prueba para probar el recurso de detalle de la api de comentarios.
29 Api: Detalle con Serialización
Vamos a crear una prueba para probar el recurso de detalle de la api de comentarios pero, empleando la clase de serialización de los comentarios.
30 Api: Crear
Vamos a crear una prueba para probar el recurso de crear.
31 Api: Actualizar
Vamos a crear una prueba para probar el recurso de actualizar.
32 Api: Eliminar
Vamos a crear una prueba para probar el recurso de eliminar.
33 Probar CommentSerializer
Vamos a crear una prueba para la serialización de los comentarios.
34 Api: Formulario con errores de validación
Vamos a crear dos pruebas para validar los errores de validación.
35 Api: Preparar clase
Vamos a crear la clase con el método de setUp con los datos de prueba.
36 Api: Paginados
Vamos a comenzar a realizar la prueba para la paginación.
37 Api: Formatear el JSON
Vamos a formatear y comparar un objeto para la paginación.
38 Api: Crear Elemento
Vamos a crear un elemento en la API.
39 Api: Actualizar Elemento
Vamos a crear una prueba para probar el recurso de actualizar.
40 Api: Formulario con errores de validación
Vamos a crear dos pruebas para validar los errores de validación.
41 Api: Eliminar Elemento
Vamos a crear una prueba para probar el recurso de eliminar.
42 Probar ElementSerializer
Vamos a crear una prueba para la serialización de los comentarios.
43 Autenticación
Veremos cómo autenticar al usuario para hacer las pruebas.
44 Factory
Hablaremos sobre cómo generar el request mediante el factory.
45 Publicar en github
Código fuente del capitulo:
https://github.com/libredesarrollo/libro-curso-django-base/releases/tag/v0.6
Autenticación personalizada
1 Introducción
2 Crear proyecto y aplicación
Vamos a crear el proyecto y la aplicación en Django.
3 Exponer rutas de autenticación
Vamos a exponer las rutas para manejar la autenticación en Django.
4 Sobrescribir template de login
Vamos a implementar el template para el login.
5 Ejecutar migraciones y crear superusuario
Vamos a ejecutar las migraciones y crear un superusuario.
6 Parámetro next
Vamos a implementar la lógica para el parámetro next.
7 Habilitar archivos estáticos
Vamos a aprender a usar los archivos estáticos como los CSS, JS, imágenes, entre otros.
8 Instalar Bootstrap y Fontawesome
Vamos a configurar estas tecnologías en nuestro proyecto.
9 Crear un template maestro
Crearemos un template maestro.
10 Especificación de atributos HTML con django-widget-tweaks
Instalaremos un paquete para poder modificar los atributos de los campos de formulario.
11 login.html
Maquetamos la página de login.
12 Mensaje de alerta
Crearemos una plantilla para mostrar mensajes.
13 password_change_form.html
Maquetamos la página para cambiar la contraseña.
14 password_change_done.html
Maquetamos la página de éxito al cambiar la contraseña.
15 password_reset_form.html
Maquetamos la página para recuperar la contraseña.
16 password_reset_done.html
Maquetamos la página de éxito al recuperar la contraseña.
17 Extra: Envio de correos, configurar Mailtrap
Vamos a conocer un servicio para enviar correos en testing.
18 password_reset_confirm.html
Maquetamos la página para recuperar la contraseña una vez enviado el token por correo y tenemos la página de colocar la nueva contraseña.
19 password_reset_complete.html
Maquetamos la página de éxito al cambiar la contraseña.
20 Registrar: Estructura inicial de la vista
Crearemos el esbozo para registrar un usuario.
21 Registrar: Formulario
Crearemos el formulario para registrar usuarios.
22 Registrar: Estructura inicial de la vista
Crearemos el esbozo para registrar un usuario.
23 Demo: Registrar: Formulario personalizado
Vamos a crear el formulario para crear el usuario de manera demostrativa empleado la clase de UserCreationForm.
24 Perfil: Estructura base
Vamos a crear la vista base de perfil para poder colocar el formulario de login.
25 Cargar el avatar: Modelo
Vamos a crear un modelo adicional para personalizar el usuario, especificamente para la carga del avatar.
26 Cargar el avatar: Definir formulario
Vamos a crear el formulario para el avatar.
27 Cargar el avatar: Emplear formulario
Vamos a aprender a procesar el formulario.
28 Cargar el avatar: Buscar userprofile existente
Vamos a buscar un perfil existente y establecerlo en el formulario cuando este exista.
29 Cargar el avatar: Configurar MEDIA_ROOT
Vamos a crear el media_root para el proyecto.
30 Cargar el avatar: Eliminar imagen del avatar anterior
Vamos a eliminar la imagen anterior al momento de cargar la imagen.
31 Cargar el avatar: Validaciones de archivo (avatar)
Vamos a aplicar algunas validaciones a la imagen.
32 Otros campos: Modelo, Formulario y migración
33 Otros campos: Template
Vamos a realizar los cambios en el modelo.
34 Mostrar información de perfil: Usuario autenticado
Vamos a mostrar datos básicos del usuario autenticado.
35 Mostrar información de perfil: Avatar
Voy a mostrarte los cambios realizamos para mostrar la imagen del avatar del usuario.
36 Publicar en github
Signals
1 Introducción
2 Presentación
3 Implementar un signal
Vamos a crear el primer signal que se ejecuta cuando se inserta un registro en la BD.
4 Publicar en github
Introducción
1 Presentación del curso
Introducción al curso
1 Estructura del curso
Este es un curso bastante grande con muchos módulos de lo cual vamos de lo más básico a aspectos más avanzados, por lo tanto, el flujo u orden del curso es secuencial...
2 Requisitos para tomar el curso
Para tomar el curso lo único que necesitas es tener conocimientos básicos en la programación, no es indispensable saber Python ya que tenemos una sección de reforzamiento...
3 Instalar Python
Vamos a enseñar como podemos instalar Python y algunas consideraciones a tener en cuenta.
4 Instalar Visual Studio Code
Vamos a instalar el IDE que vamos a emplear en este curso para desarrollar nuestras aplicaciones en Python y Django.
5 Configurar nuestro Editor
Vamos a crear la carpeta de nuestro proyecto que vamos a emplear en esta sección para realizar las distintas pruebas y conocer Python.
6 Software necesario
Vamos a hablar sobre parte del software necesario para este curso.
Python básico
1 Sobre la sección
En esta sección vamos a dar un repaso básico a Python; siéntete libre de saltar esta sección si consideraras que ya cuentes con dichos conocimientos y quieres ir a desarrollar de una tu primera aplicación en Django.
2 Variables
Vamos a conocer como podemos crear variables en Python.
3 Tipos de datos
Vamos a conocer los tipos de datos en Python; string, flotantes, enteros y booleanos.
4 Operadores
Vamos a conocer el uso de los operadores matemáticos en Python.
5 Más datos sobre el String
Vamos a dar algunos datos extras sobre el string para contar longitudes, reemplazar ocurrencias etc.
6 String Format (Formato de los String)
Vamos a conocer otra característica interesante sobre los String que sería el formato para imprimir o concatenar distintos tipos de datos y dando como salida un String.
7 Listas
Vamos a presentar una estructura que nos permitirá guardar colecciones de enteros, string, etc en una variable.
8 Condicionales
Vamos a ver cómo podemos emplear los condicionales en Python.
9 For Python
Vamos a ver el uso de los ciclos for en python para iterar listas.
10 Funciones
Vamos a conocer el uso de las funciones en Python, pase de parámetros y retornos de valores.
11 Clases
Vamos a crear nuestra primer clase, así como atributos métodos y constructores y crear una instancia de la misma.
12 Enums
Vamos a ver el uso de los tipos enumerados en Python para crear constantes.
13 Diccionarios
Vamos a conocer la estructura llamada diccionario para crear estructuras de tipo clave valor.
14 Try except: errores y excepciones
Vamos a conocer cómo podemos manejar los errores en tiempo de ejecución en nuestra app.
Conociendo el mundo de Python, pip y Django
1 Sobre los ambientes virtuales de Python y el curso
Vamos a hablar sobre el uso de los venv en nuestro curso.
2 Introducción
3 Presentando el módulo administrador
Vamos a habilitar y hacer las primeras pruebas con el módulo administrador.
4 Sobre el resto de la sección
Sobre el resto de la sección
5 Nuestro primer proyecto
Vamos a crear el primer proyecto en Django mediante la línea de comando.
6 Proyecto vs aplicación
Vamos a hablar en qué consiste esta organización de proyectos y aplicaciones que hace Django.
7 Nuestra primera aplicación
Vamos a crear nuestra primera aplicación en Django.
8 Creando nuestra primera vista
Vamos a crear algo funciona, que sería una vista que devuelva un hola mundo.
9 Configurando la base de datos en SQLite
Vamos a aprender a configurar la base de datos que de momento, vamos a emplear SQLite.
10 Creando los modelos
Vamos a crear nuestros modelos en la app polls creada anteriormente.
11 Creando las migraciones y las tablas en base de datos
Vamos a crear las migraciones gracias a los modelos generados anteriormente.
12 Emplear la consola interactiva de Django para gestionar registros
Vamos a emplear la consola interactiva de Django para hacer las primeras pruebas con nuestro modelo de datos.
13 Arreglando la representación de la impresión del registro
Vamos a modificar como se muestra la impresión de los registros por la consola.
14 Presentando el módulo administrador
Vamos a habilitar y hacer las primeras pruebas con el módulo administrador.
15 Crear vistas personalizadas en la app de polls
Vamos a crear vistas personalizadas para imprimir el question_id que va a ser pasado como parámetro a estas vistas.
16 Obtener un poll o conjunto de registros
Vamos a conectarnos a nuestra base de datos para obtener los registros de las preguntas y mostrarlas en un string separado por comas.
17 Crear un template para nuestro listado
Vamos a crear un template o vista sencilla para mostrar el listado de preguntas.
18 Detallando un poco más el ejemplo anterior
Vamos a detallar un poco más lo que hicimos en el ejemplo anterior.
19 Compactando la invocación de nuestro template render
vamos a limpiar un poco más el uso de los template con un nuevo método.
20 Página de detail: mostrar página de 404 si la question no existe
Vamos a comenzar a trabajar con la página de 404 para cuando las question no existan.
21 Página de detail: mostrar página de 404 si la question no existe (2° forma)
Vamos a ver otro mecanismo más corto para mostrar errores 404 cuando un ID no existe.
22 Crear página de detalle
Vamos a crear la página/template inicial para el detalle.
23 Mejorando la vista de detalle: pintando los choice
Vamos a pintar los choice del question seleccionado.
24 Vista de resultado
Vamos a crear la vista de resultado.
25 Usando rutas con nombre
Vamos a configurar una ruta con nombre para ir de una vista a otra mediante los enlaces.
26 Crear formulario para enviar un voto
Vamos a crear un formulario para enviar un voto.
27 Procesar la petición del formulario: sumar un voto
Vamos a hacer la parte del controlador de la vista que desarrollamos anteriormente, sumar un voto.
28 Creando Vistas genéricas
Vamos a ver una característica muy interesante de django, que es el uso de las vistas genéricas de django y reutilizar vistas existentes mediante clases.
29 Cargar archivos estáticos: CSS, JS...
Vamos a conocer un mecanismo con el cual podemos cargar archivos estáticos en django.
30 Personalizar el Admin: Agregar modelos para automatizar el CRUD
Vamos a empezar a personalizar el módulo de admin de django, en esta oportunidad agregar modelos para poder emplear el sistema de crud de django.
31 Personalizar el Admin: Dividir en secciones el formulario
Vamos a conocer como podemos dividir el formulario en secciones.
32 Personalizar el Admin: Agregar el modelo de Choice
Vamos a agregar otro modelo, para nuestra app de admin.
33 Personalizar el Admin: Agregar modelos relacionados en un formulario
Vamos a conocer cómo podemos vincular formularios de choice al momento de definir un formulario de question.
34 Personalizar el Admin: Columnas personalizadas para el listado
Vamos a definir de manera manual cuales son las columnas que queramos que aparezcan cuando construimos el listado.
35 Personalizar el Admin: Filtrar en el listado
Vamos a agregar filtros al listado.
36 Personalizar el Admin: Campo de búsqueda en el listado
Vamos a agregar un campo de búsqueda al listado.
37 Personalizar el Admin: Personalizar layout del admin
Vamos a personalizar el Laporta del admin con CSS.
Crear app de listados de productos
1 Introducción
2 Crear proyecto y aplicación
Vamos a crear un nuevo proyecto y aplicación en django.
3 Crear modelos iniciales
Vamos a crear los modelos con la estructura que vamos a emplear para la siguiente sección.
4 Configurar base de datos en MariaDB
Vamos a aprender a configurar una base de datos en MySQL en django.
5 Crear y ejecutar migraciones
Vamos a crear las migraciones y luego ejecutarlas para que se generen las tablas en base de datos.
6 Registrar modelos en la app de Admin y llenar algunos datos
Vamos a registrar los modelos en la app de Admin para poder generar algunos datos de prueba.
7 Configurar la función __str__
Vamos a configurar la función ser para la impresión de un objeto de un modelo.
Crear Rest Api con Django REST framework
1 Introducción
2 Instalar Django Rest Framework
Vamos a instalar el toolkit para poder configurar una Rest Api en django.
3 Crear estructura para la Rest Api - modelo Element
Vamos a crear nuestros primeros recursos para la Rest API, mediante el modelo de element vamos a crear todas las operaciones tipo CRUD mediante la Rest.
4 Crear el resto de los recursos modelos Category y Type
Vamos a crear los recursos tipo CRUD para el resto de los modelos.
5 Presentar la Api Rest
Vamos a hacer una pruebas con la Rest API desde el navegador.
6 Probar todos los métodos de la Rest Api mediante Postman
Vamos a hacer conexiones a la Rest API mediante postman.y probar todos los recursos tipo CRUD.
7 Más información para personalizar métodos de la Rest Api
Vamos a dar más información sobre los archivos creados. que más pueden hacer para nuestra Rest Api.
8 Crear métodos personalizados: Elementos dado la categoría
Vamos a crear un método personalizado para obtener los elementos dado la categoría.
9 Crear métodos personalizados: Elementos dado el tipo
Vamos a replicar el desarrollo anterior para los tipos.
***Legacy*** Aplicación con Vue 2
1 Secciones legacy
2 Introducción
Introducción a la sección
3 Presentación Vue
Vamos a dar algunos detalles sobre Vue.
4 Instalar el ecosistema necesario, Node y Vue Cli
Vamos a instalar el ecosistema necesario para desarrollar nuestras apps con Vue Cli.
5 Crear un proyecto en Vue Cli
Vamos a crear nuestro primer proyecto mediante Vue Cli.
6 Explicar estructura de un proyecto con Vue Cli
Vamos a explicar la estructura de un proyecto generado mediante la Vue Cli.
7 Crear el Hola Mundo en Vue
Vamos a crear nuestro Hola Mundo en Vue.
8 Los ciclos en Vue, atributos y concatenación en Vue
Vamos a presentar los ciclos, para iterar elementos.
9 Métodos y evento click en Vue
Vamos a crear un método que imprima un mensaje por consola en base a un evento click de nuestro usuario.
10 Los fetch para obtener recursos: Realizar una petición a nuestra Rest Api
Vamos a presentar los fetch, como mecanismo para conectarnos mediante HTTP y conseguir datos de manera asíncrona.
11 Instalar y configurar django-cors-header
Vamos a superar el bloqueo que tenemos al realizar una petición a otro servidor en django.
12 Consumir fetch desde Vue
Vamos a consumir un recurso de la Rest de django mediante Vue.
13 Ciclo de vida de una aplicación en Vue
Vamos a explicar el ciclo de vida de una aplicación en Vue y ver que podemos sacar de esto para mejorar la app.
14 Instalar Vue Bootstrap
Vamos a instalar Vue Bootstrap para mejorar el aspecto de nuestra app.
15 Crear una carta con los elementos
Vamos a crear nuestro primer componente en Bootstrap Vue que sería el de la carta, para nuestro listado.
16 Definir el layout container
Vamos a crear un container para nuestro contenido.
17 Demo: Crear una tabla con los elementos
Vamos a ver una demostración, y vamos. a crear una tabla mediante Vue Bootstrap.
18 Crear página para el detalle de un componente
Vamos a crear un navbar para nuestra app mediante Vue Bootstrap.
19 Crear un componente de navegación
Vamos a crear un boceto para la página de detalle.
20 Vue Router: Habilitar la navegación entre componentes (SPA)
Vamos a construir una web SPA con Vue Router.
21 Vue Router: crear enlace para el componente de detalle
Vamos a crear un enlace para poder navegar entre componentes de la web SPA.
22 Crear componente de listado de categorías
Vamos a crear un componente de listado para todas las categorías.
23 Crear componente de listado de tipos
Vamos a crear un componente de listado para los tipos.
24 Crear enlaces de categorías y tipos para el Header
Vamos a crear todos los enlaces de categorías y tipos anteriores en nuestro navbar.
25 Componente de listado de elementos dado la categoría
Vamos a crear el listado de elementos seleccionado una categoría y conectarnos a nuestra Rest para obtener el listado.
26 Crear componente genérico de listado de elementos
Vamos a crear un componente de listado genérico.
27 Definir el listado principal con el listado genérico
Vamos a modificar el componente de listado principal con el componente genérico de listado.
28 Componente de listado de elementos dado el tipo
Vamos a replicar el componente de listado genérico para los tipos.
29 Los watch para observar cambios
Vamos a presentar los watch para observar cambios sobre propiedades u otros elementos.
30 Colocar los listados de categorías y tipos al lado
Vamos a alinear los listados de categorías y tipos.
31 Mejorar el componente de carta para el listado de elementos
Vamos a mejorar la presentación de nuestro listado genérico para los elementos.
32 Mejorar el componente de carta para el detalle de elementos
Vamos a mejorar la presentación del componente de detalle.
33 Pintar la categoría y el tipo en el detalle
Vamos a dar más te talle sobre la categoría seleccionada indicando a qué tipo y categoría pertenece.
34 Hacer peticiones para obtener detalle de la categoría y el tipo
Vamos a construir más peticiones para obtener el detalle de la categoría y tipo.
35 Instalar axios para realizar peticiones asíncronas
Vamos a instalar axios, que es un cliente similar al fetch que empleamos para hacer las peticiones para ver una variante.
36 Hacer peticiones mediante axios en la vista de detalle
Vamos a hacer un ejercicio para hacer peticiones mediante axios.
37 Corregir [vue-router] missing param for named route ... Expected "id"
Vamos a corregir un error que quedó pendiente al integrar los enlaces de categoría y tipo en el detalle del elemento.
38 Siguientes pasos
Vamos a hablar sobre lo construido hasta este punto y que necesitamos para seguir avanzando.
Manejo de formularios en Django
1 Introducción
2 Crear una app para los comentarios
Vamos a crear una nueva app con la cual vamos a trabajar con comentarios.
3 Crear modelo y migración para los comentarios
Vamos a crear el modelo inicial.
4 Crear un listado de los comentarios
Vamos a crear la función y vista asociada a la vista de index, el listado.
5 Crear formulario para agregar un comentario
Vamos a crear un formulario para agregar comentarios empleando Django Form Model.
6 Personalizar el formulario
Vamos a personalizar atributos del formulario.
7 Definir el formulario en HTML para enviar la petición
Vamos a definir el resto del cuerpo para que funcione el formulario.
8 Validar y procesar el formulario desde el controlador
Vamos a validar el formulario y hacer el procesamiento del mismo para luego guardar el mismo en BD.
9 Hacer redirección al momento de crear un elemento
Vamos a aprender a hacer una redirección con los shortcut de django.
10 Actualizar un comentario
Vamos a crear otro método, basado en el de creación para actualizar un comentario mediante los formularios de django.
11 Commit: No registrar los cambios en base de datos
Vamos a conocer cómo emplear un atributo de los save para guardar los datos en la base de datos o no.
12 Método save personalizado
Vamos a personalizar el método de save para hacer operaciones previas antes de guardar.
13 Ver errores del formulario
Vamos a ver cómo podemos obtener y mostrar los errores del formulario.
14 Creando formularios personalizados
Vamos a crear un formulario personalizado o genérico en django.
15 Errores de formulario
Vamos a ver como podemos ver los errores en los formularios y realizar algunas pruebas más.
16 Explorando otros campos de formulario y completando el mismo
Vamos a crear un formulario un poco más completo con otros tipos de campos.
17 Instalar Bootstrap 4
Vamos a instalar el toolkit de Bootstrap para nuestra aplicación.
18 Sobre Bootstrap 5
19 Personalizar campos de formulario con las clases de Bootstrap 4
Vamos a instalar un módulo adicional de Python para que nuestro formulario pueda tomar el estilo de Bootstrap.
20 Crear un container
Vamos a crear un container para nuestro formulario.
21 Mostrar errores agrupados en un componente de Bootstrap
Vamos a mostrar los errores agrupados en un listado.
22 Validators/Validaciones
Vamos a trabajar con las validaciones sobre los campos de formulario.
23 Widgets
Vamos a trabajar con los widgets, que viene siendo el mecanismo que tenemos para personalizar el campo de formulario.
24 Campo de subir archivos y booleano
Vamos a crear un par de campos para trabajar con los archivos y booleanos.
25 Procesar formulario datos básicos
26 Crear modelo para contacto
Vamos a crear un par de campos para trabajar con los archivos y booleanos.
27 Procesar formulario: archivos y datos básicos
Vamos a procesar todo el contacto de formulario y guardar los datos en la base de datos.
28 Crear un listado de tipo de negocio: ChoiceField/Tupla
Vamos a crear un sencillo select o campo de selección con datos estáticos de una tupla.
29 Crear modelo para tipo de contacto
Vamos a crear un modelo para manejar el tipo de contacto.
30 Crear un listado de tipo de negocio: ModelChoiceField/Modelo
Vamos a presentar el uso de los campos de selección atados a un modelo o consulta.
31 Crear un listado de sexo: ChoiceField/Tupla
Vamos a crear otro listado genérico para trabajar con el sexo y una tupla estática.
32 Carga de archivos opcional
Vamos a permitir que la carga de archivos sea opcional.
33 Redireccionar al momento de crear el contacto
Vamos a crear una redirección al momento de crear el contacto.
34 Mensajes flash por sesión
Vamos a conocer los mensajes flash en django.
35 Mostrar mensaje flash en un componente de alert
Vamos a mejorar el aspecto de los mensajes mostrados vía flash.
36 Mejorar el aspecto del formulario
Vamos a mejorar el aspecto del formulario.
37 Detalles funcionales finales sobre el formulario
Vamos a aplicar algunos cambios finales sobre el formulario.
Manejo de templates en Django y trabajando con Bootstrap 4 o 5
1 Introducción
2 Include: para incluir fragmentos de vista
Vamos a conocer una directiva para incluir fragmentos de vista en otra vista.
3 Crear template maestro
Vamos a empezar a definir un template maestro para la app de coments.
4 extends y block: Define una plantilla maestra
Vamos a conocer el uso de los block y extends para crear una plantilla maestra.
5 Emplear plantilla maestra en el resto de la aplicación
Vamos a extender el uso de la plantilla maestra.
6 Crear un header con opciones navegables
Vamos a crear un header o navbar que nos ofrece en Bootstrap 4.
7 Activar el JavaScript de Bootstrap 4 o 5
Vamos a activar el JavaScript de Bootstrap 4 para que funcionen ciertos componentes del navbar.
8 Crear un footer
Vamos a crear un sencillo footer para la app.
9 Etiqueta autoescape HTML
Vamos a presentar una etiqueta para escapar o no contenido HTML y JavaScript.
10 Comentarios en el template
Vamos a aprender a crear comentarios de distintos propósitos en django template.
11 La etiqueta cycle
Vamos a presentar la etiqueta cycle.
12 Filtros en los template
Vamos a presentar los filtros y trabajar con algunos de ellos.
13 Más etiquetas y operaciones con los template
Vamos a hablar un poco más de qué más podemos hacer con los template en django.
Rest Api con Django REST framework parte 2
1 Introducción
2 Crear relación de uno a muchos entre (One to Many) entre elements y comentarios
Vamos a crear una relación entre muchos a uno opcional entre los comentarios y los elementos.
3 Obtener el detalle de la categoría, tipo y comentarios para los elementos
Vamos a dar más detalle al elemento, con los modelos relacionados.
4 Obtener el detalle de la categoría y el tipo
Vamos a obtener todo el detalle de la categoría y del tipo en la Rest.
5 Recurso de comentario
Vamos a habilitar el recurso tipo Rest para los comentarios de los elementos.
6 Modo solo lectura para las categorías y tipos
Vamos a habilitar el modo solo lectura para las categorías y los tipos.
7 Habilitar la paginación
Vamos a habilitar la paginación para toda la Rest Api.
8 Obtener solo los comentarios con elementos asociados
Vamos a modificar el recurso para los comentarios para que solamente devuelvan los que tengan establecidos un elemento.
9 Método all para obtener todos los registros
Vamos a implementar un conjunto de métodos para obtener todos los registros de nuestros modelos.
10 Obtener detalle elemento por la URL limpia
Vamos a obtener el detalle de un elemento por la url_limpia.
11 Replicar la función en el resto de los métodos
Vamos a replicar el ejercicio anterior en el resto de los métodos.
12 Obtener cantidad comentarios en detalle de elementos
Vamos a conocer como podemos crear variables personalizadas para nuestro json.
13 Definir campo serializado para la cantidad de comentarios
Script para definir serializado
Módulo de usuario y autenticación en Django
1 Introducción
2 Dando los primeros pasos para lograr la autenticación en la aplicación
Vamos a explicar como funciona y cómo podemos configurar la aplicación de autenticación que nos ofrece Django.
3 Configurando una app para el módulo de usuario
Vamos a crear una aplicación para el módulo de usuario.
4 Creando el template para el login
Vamos a configurar el template inicial para el login.
5 Adaptar un diseño para nuestro template de login
Vamos a adaptar un diseño existente para la página de login.
6 Personalizar alert de errores
Vamos a personalizar los errores para que tomen el alert de Bootstrap.
7 Pasar datos al template de alert
Vamos a personalizar los errores para que se encuentren definidos en una página aparte.
8 Pasar datos de manera opcional
Vamos a aprender a pasar datos o variables de manera opcional.
9 Personalizar url de logout
Vamos a personalizar la URL de redirección del logout.
10 Personalizar template de la vista de cambiar contraseña
Vamos a personalizar el template para cambiar la contraseña.
11 Demo: Ruta personalizada para las vistas: cambiar contraseña
Vamos a ver una demostración de cómo podemos cambiar la ruta de los métodos que ya tenemos provistos para el manejo del módulo de usuario tomando como caso de estudio el de cambiar contraseña.
12 Personalizar template de la vista de confirmación de cambiar contraseña
Vamos a personalizar la vista (formulario) de confirmación de cambiar la contraseña.
13 Personalizar template de la vista de recuperar contraseña
Vamos a configurar la vista de confirmación para recuperar la contraseña.
14 Configurar el envío de correo con Mailtrap
Vamos a configurar rápidamente nuestro Django para que pueda enviar correos mediante Mailtrap, que es un servicio para envío de pruebas de emails.
15 Configurar la página de confirmación (formulario de cambiar pass) del reinicio
Vamos a configurar la página para recuperar la contraseña.
16 Configurar la página de confirmación del reinicio de la contraseña
Vamos a configurar la página de confirmación de recuperar la contraseña.
17 Obtener datos del usuario autenticado
Vamos a conocer el mecanismo que tenemos que seguir para obtener la información del usuario autenticado.
18 Verificar si el usuario está o no autenticado
Vamos a conocer como podemos preguntar si el usuario está o no autenticado.
19 Proteger recursos mediante login requerido
Vamos a aprender a proteger recursos para que solamente puedan ser consumidos si el usuario está autenticado.
20 Demo: Mostrar al usuario valor del next
Vamos a hacer una demostración de cómo emplear la variable next desde el login.
21 Registrar usuario: Crear Vista base
Vamos a crear la vista base para registrar un usuario.
22 Registrar usuario: Procesar solicitud
Vamos a procesar la solicitud para registrar un usuario.
23 Registrar usuario: Autenticar al usuario tras el registro
Vamos a hacer el proceso de autenticación tras el registro.
24 Registrar usuario: Personalizar el formulario, colocar un campo para el email
Vamos a registrar un nuevo campo para el email en el formulario de UserCreationForm.
25 Registrar usuario: Registrar cambios en la base de datos
Vamos a registrar el nuevo cambio (email) en la base de datos.
26 Registrar usuario: Guardar formularios en forms.py
Vamos a hacer un cambio de nombre en el archivo de los formularios.
27 Registrar usuario: Definir enlaces de navegación entre login/registrar
Vamos a colocar los enlaces correctos entre las vistas de login y registrar.
28 Perfil: Reestructura de la vista de perfil
Vamos a hacer un acomodo visual en la vista de perfil.
29 Cargar el avatar: Definir vista base, modelo y formulario (OneToOne)
Vamos a crear la estructura base para cargar un avatar, que sería, un nuevo modelo, la vista base y el formulario.
30 Cargar el avatar: Procesar solicitud
Vamos a procesar la carga del archivo o avatar.
31 Cargar el avatar: Identificador del usuario
Vamos a establecer el ID del avatar al momento de guardar el registro.
32 Cargar el avatar: Validar imagen cargada, dimensiones
Vamos a establecer el ID del avatar al momento de guardar el registro.
33 Cargar el avatar: Validar imagen cargada, tipo
Vamos a aprender a hacer validaciones sobre la imagen que estamos cargando, específicamente por el alto y largo.
34 Cargar el avatar: Validar imagen cargada, tamaño (kb)
Vamos a aprender a hacer validaciones sobre la imagen que estamos cargando, específicamente el tipo.
35 Cargar el avatar: Actualizar UserProfile existente
Vamos a aprender a hacer validaciones sobre la imagen que estamos cargando, específicamente por el tamaño.
36 Cargar el avatar: Consultar el userProfile desde el request
Vamos a aprender a consultar el perfil del usuario desde el request.
37 Cargar el avatar: Configurar el MEDIA_URL para consumir la imagen
Vamos a configurar el MEDIA_URL del proyecto que es empleado cuando cargamos un archivo.
38 Cargar el avatar. Borrar archivo de avatar anterior
Vamos a borrar el archivo o avatar anterior al momento de que se cargue el nuevo.
39 Cargar el avatar: Servir (pintar) la imagen o avatar
Vamos a presentar la imagen en la vista.
40 Avatar: Dar formato al avatar de nuestro usuario y validar si perfil existe
Vamos a mejorar el aspecto de la imagen cargada y verificar si el perfil existe.
41 Avatar: Acomodar el estilo del formulario
Vamos a cargar acomodar el estilo del formulario para que tome un mejor aspecto.
42 Avatar: Acomodar el estilo del formulario parte 2, JavaScript
Vamos a implementar el código JavaScript para variar el contenido del label según el archivo cargado.
Extra: Aspectos generales
1 Los ambientes virtuales para desarrollar nuestras aplicaciones
Vamos a hablar sobre los ambientes virtuales en Python y cómo emplearlos en el curso.
2 Enviar Email (SMTP Mailtrap)
Vamos a aprender a enviar un email mediante en Django.
3 Enviar Email con contenido HTML (SMTP Mailtrap)
Ahora vamos a enviar el mismo email pero con contenido HTML.
4 Paginación: Primeros pasos
Vamos a conocer cómo nosotros podemos crear un sistema de paginación.
5 Paginación: Construyendo listado de comentarios
Vamos a ver un caso práctico para paginar los registros de los comentarios.
6 Paginación: Construyendo un listado de páginas genéricas
Vamos a construir un sistema genérico de paginación del listado.
7 Paginación: Adaptar el listado de páginas genéricas a Bootstrap 4
Vamos a adaptar el trabajo anterior para que tenga un diseño de Bootstrap 4.
8 Logging: Manejo de los logs y generación de msj
Vamos a conocer cómo podemos trabajar con los logs en Django.
9 Criptografía: Proteger datos sensibles
Vamos a conocer el uso de la criptografía para firmar textos.
10 CSV: Exportar datos
Vamos a ver un ejemplo sencillo para exportar a CSV.
11 CSV: Exportar nuestros contactos
CSV: Exportar nuestros contactos
12 Traducción estándar en Django: Presentación
Vamos a comenzar con la traducción de nuestra app y vamos a conocer los mecanismos necesarios para hacer esta labor.
13 Traducción estándar en Django: Generar textos a traducir
Vamos a generar los textos que queremos traducir.
14 Traducción estándar en Django: Generar archivos de lenguaje/mensaje
Vamos a generar los archivos de traducción a partir de los textos.
15 Traducción estándar en Django: Probar nuestra aplicación
Vamos a probar la app y terminar de configurar la misma para que funciona con los archivos de traducción.
16 Traducción estándar en Django: Imprimer en los templates
Vamos a imprimir los string de traducción en un template.
17 Sesión: Guardar y eliminar datos
Vamos a conocer el uso de la sección en django para registrar datos.
Crear una pequeña Tienda en Línea
1 Introducción
2 Crear estructura inicial de la sección
Vamos a crear una nueva app y registrarla en nuestro proyecto.
3 Crear listado de elementos
Vamos a crear un listado inicial de elementos.
4 Mejorar el aspecto de la vista de listado
Vamos a mejorar el aspecto de nuestro listado.
5 Crear página de detalle empleando las vistas genéricas
Vamos a crear una vista de detalle, empleando las vistas genéricas de Django.
6 Consumir vista de detalle por la url_clean/slug
Vamos a consumir la vista de detalle por el slug o la url limpia.
7 Consumir vista de detalle por el id y el url_clean/slug
Vamos a consumir una página tanto por el slug como por la pk.
8 Crear buscador: Crear formulario
Vamos a crear el HTML de un formulario para realizar una búsqueda.
9 Crear buscador: Buscar por el título
Vamos a crear la parte funcional en nuestra Views, para realizar la búsqueda.
10 Crear buscador: Filtro por categoría
11 Crear buscador: Valores anteriores
Vamos a preservar los valores seleccionados por nuestro usuario en el filtro en HTML.
12 Crear cuenta en el sitio de desarrolladores de PayPal
Vamos a conocer que necesitamos para realizar un pago vía PayPal.
13 Sobre la SDK de PayPal empleada para desarrollar el proyecto
Sobre la SDK de PayPal empleada para desarrollar el proyecto
14 Crear funciones para procesar la respuesta de PayPal
Vamos a crear una función para realizar un pago de prueba.
15 Definir una columna para el precio del modelo elements
Vamos a agregar una columna de precio para nuestro modelo de elementos.
16 Configurar un pago de PayPal con un producto
Vamos a configurar el pago PayPal a un producto.
17 Crear página para mostrar el link de pago
Vamos a crear una página para mostrar el link de pago.
18 Definir modelo para guardar los pagos de un usuario autenticado
Vamos a crear un modelo para guardar los pagos realizados vía PayPal.
19 Crear constructor del modelo payments
Vamos a crear un método constructor que se encargue de crear un objeto Payment.
20 Verificar si el usuario está autenticado al momento de hacer el pago
Vamos a verificar que el usuario esté autenticado en ciertos procesos claves.
21 Procesar la respuesta del pago vía PayPal
Vamos a procesar la respuesta de PayPal en nuestra función.
22 Colocar las claves de acceso de PayPal en las configuraciones del proyecto
Vamos a definir las credenciales de PayPal en el archivo de settings.
23 Excepciones en el pago
Vamos a capturar una posible excepción al momento de comunicarnos con PayPal.
24 Emplear la REST API SDK for Python V2
Vamos a hablar un poco sobre la SDK actual de PayPal y su integración con nuestro proyecto.
25 Instalar la SDK de PayPal y configurar pago de la aplicación
Vamos a procesar la respuesta de PayPal una vez realizado el pago de un producto.
26 Procesar el pago de la aplicación
Vamos a procesar la respuesta de PayPal una vez realizado el pago de un producto.
27 Ventana de detalle del pago: Error en el constructor
Vamos a corregir el constructor para crear un Payment.
28 Ventana de detalle del pago: Terminar diseño
Vamos a terminar el diseño inicial de nuestra página de detalle.
29 Listado de pagos: Vista inicial
Vamos a crear la vista inicial para mostrar todos los pagos.
30 Listado de pagos: Retribuir los datos relacionales en una misma consulta
Vamos a hacer unas pruebas para mostrar el elemento asociado al pago realizado y ver y reparar el problema de obtener datos adicionales según la relación foránea.
31 Listado de pagos: colocar la vista de detalle
Vamos a mostrar el enlace en el listado para ver el detalle de una compra.
32 Listado de pagos: Todos los pagos por el usuario
Vamos a ver solamente los pagos del usuario autenticado.
33 Mostrar solamente elementos de tipo product en el index
Vamos a ver solamente los elementos de tipo producto.
Vamos a aprender a crear imágenes de pequeñas dimensiones fácilmente.
3 Django import / export: Primeros pasos
Vamos a aprender a exportar datos desde nuestro módulo de admin; primero veremos cómo realizar la instalación.
4 Django import / export: Exporta datos fácilmente
Vamos a aprender a exportar datos desde nuestro módulo de admin.
5 Django import / export: Importar Datos fácilmente
Vamos a aprender a importar datos desde nuestro módulo de admin.
6 Django Debug Toolbar: Ve en detalle todo lo que sucede en tu aplicación
Vamos a aprender un sencillo mecanismo que nos permitirá obtener datos fácilmente de lo que ocurre en nuestra app.
7 Django rest framework: Construye tu Api Rest
Vamos a hablar sobre un paquete que ya empleamos para construir una Api Rest en Django.
8 Django Bootstrap Form: Personaliza el estilo de tus formularios
Vamos a hablar sobre el paquete que empleamos para personalizar el estilo de los formularios en Django.
9 Django Cors Headers: Habilita peticiones a tu app desde otras apps
Vamos ha hablar sobre este paquete que permite habilitar las peticiones de apps de terceros a Django.
10 Personalizar el diseño del módulo de admin
Vamos a instalar y configurar un paquete para personalizar el layout de la app de admin.
Carga y proceso de imágenes de los productos en la app de Admin
1 Introducción
2 Definir el modelo para las imágenes de los productos
Vamos a definir un modelo para poder cargar imágenes de productos.
3 Registrar la relación de imágenes desde el formulario de Elementos en Admin
Vamos a crear las relaciones necesarias para cargar imágenes desde la app de admin.
4 Escalar y recortar (Scale/crop) la imagen cargada
Vamos a aprender a escalar y cortar las imágenes que estamos cargando en un momento dado.
5 Los signals para escuchar eventos o sucesos en nuestra app
Vamos a conocer los signals, para escuchar eventos de nuestros procesos CRUD asociados a un modelo.
6 Borrar imágenes asociadas al momento de borrar el registro
Vamos a eliminar las imágenes una vez borrado el registro principal.
7 Borrar imágenes al momento de cambiar un registro
Vamos a eliminar las imágenes una vez cambiada el registro principal.
8 Borrar archivo extra de la rescalada
Vamos a borrar la imagen extra al momento de cambiar o eliminar el registro.
Trabajar en el diseño básico de nuestra tienda en línea
1 Introducción
2 Páginas o templates de referencia
Vamos a hablar sobre el template que vamos a tomar de referencia.
3 Crear archivo de CSS personalizado
Vamos a crear un archivo CSS custom para nuestra tienda.
4 Imágenes de muestra
Vamos a ver de donde podemos obtener imágenes gratis y libres para nuestro proyecto.
5 Adaptar el tamaño de la imagen a reescalar y cargar imágenes
Vamos a adaptar la imagen personalizada que generamos mediante nuestra aplicación para que se ajuste a la del template o página boceto.
6 Guardar nombre y extensión de la imagen
Vamos a guardar el nombre de la imagen y la extensión en columnas apartes.
7 Guardar ruta relativa
Vamos a guardar la ruta relativa de la imagen.
8 Cargar imágenes de muestra en la app
Vamos a cargar algunas imágenes que vamos a emplear para desarrollar la app.
9 Adaptar listado al del template
Vamos a empezar la adaptación de la tienda en línea en django a la página del template.
10 Cargar una imagen
Vamos a colocar la imagen principal del elemento en nuestro listado.
11 Cargar la imagen personalizada
Vamos a colocar la imagen principal del elemento en nuestro listado.
12 Traer todos los datos en un solo batch (prefetch_related)
Vamos a aprender cómo podemos obtener también las imágenes desde el batch principal.
13 Validar que la imagen exista en el listado
Vamos a validar que al menos exista una imagen para el listado y colocar una imagen por defecto en caso de que no exista.
14 Estilo para los filtros
Vamos a darle estilo al filtro o formulario para la búsqueda.
15 Colores por defecto
Vamos a cambiar algunos colores base.
16 Definir tipografía de Google Fonts
Vamos a instalar una fuente tipográfica.
17 Colocando un título
Vamos a definir un título con un estilo para el index.
18 Diseño de la paginación
Vamos a variar el diseño para los enlaces de paginación.
19 Página de detalle: Carrusel base
Vamos a crear un carrusel o una galería para las imágenes del producto seleccionado.
20 Página de detalle: Activar las imágenes
Vamos a dejar seleccionado una imagen por defecto.
21 Página de detalle: Definir los indicadores
Vamos a definir un conjunto de indicadores para el carrusel.
22 Página de detalle: Organizar el contenido en columnas
Vamos a organizar el contenido de nuestra página de detalle en columnas.
23 Página de detalle: Diseño para la carta
Vamos a variar o adaptar el diseño para la vista de detalle.
24 Instalar iconografía
Vamos a instalar una iconografía para nuestra app.
25 Definir algunos íconos para nuestra aplicación
Vamos a definir algunos íconos para nuestra app.
Potenciando la Tienda en Línea
1 Introducción
2 Sistema de comentarios: Definir el modelo y las migraciones
Vamos a definir el modelo y la tabla para los comentarios.
3 Sistema de comentarios: Relaciones en el admin
Vamos a crear la clase para gestionar los comentarios desde el admin.
4 Sistema de comentarios: Crear el formulario
Vamos a crear el formulario para agregar los comentarios.
5 Sistema de comentarios: Procesar comentarios en la vista/controlador
Vamos a procesar el comentario enviado por el usuario.
6 Sistema de comentarios: Comentarios en el template
Vamos a pintar los comentarios en el template.
7 Sistema de comentarios: Formulario en el template
Ahora vamos a pintar el formulario en el template.
8 Sistema de comentarios: Detalles del aspecto del formulario
Vamos a tocar ciertos aspectos visuales y funcionales en el bloque de comentarios que estamos hablando.
9 Sistema de comentarios: Errores del formulario en un partial
Vamos a colocar los errores del formulario en un template aparte.
10 Sistema de comentarios: Comentar por usuario autenticado
Vamos a realizar unas validaciones para que un usuario autenticado pueda saltarse algunos datos.
11 Sistema de Tags: Instalar y configurar
Vamos a instalar una aplicación para hacer etiquetables los modelos que definamos.
12 Sistema de Tags: Agregar algunos tags a los Elementos
Vamos a agregar algunas etiquetas a algunos elementos.
13 Sistema de Tags: Gestionar algunos tags desde la shell/programáticamente
Vamos a aprender a trabajar con los tags programáticamente.
14 Sistema de Tags: Pintar los tags en la vista de detalle
Vamos a colocar los tags dentro de la vista de detalle.
15 Sistema de Tags: Crear filtrar por tags en listado
Vamos a crear el filtro por tags para la vista de listado.
16 Sitemap: Configuración inicial
Vamos a hacer las configuraciones iniciales para mantener el sitemap.
17 Sitemap: Preparar el modelo de elementos para el Sitemap
Vamos a preparar el modelos de elementos para poder emplearlo al momento de generar el sitemap.
18 Sitemap: Configurar en la app de Store
Vamos a crear finalmente el sitemap.
19 Sistema de cupones: Crear modelo y tabla
Vamos a crear la estructura para manejar los cupones para una compra.
20 Sistema de cupones: Relaciones en el admin
Vamos a crear la relación con el admin.
21 Sistema de cupones: Crear cupones en el admin
Vamos a crear algunos cupones con los cuales trabajar.
22 Sistema de cupones: Desarrollar el formulario para aplicar el cupón
Vamos a crear el formulario que vamos a emplear para procesar el cupón.
23 Sistema de cupones: Pintar el formulario del cupón en el template
Vamos a pintar el formulario en nuestro template de detalle del elemento.
24 Sistema de cupones: Dar estilo al formulario cupón
Vamos a dar un poco de estilo al formulario del cupón.
25 Sistema de cupones: Desarrollar la función para validar el cupón
Vamos a desarrollar la función para procesar el cupón.
26 Sistema de cupones: Consumir el cupón en la compra desde la vista de detalle
Vamos a modificar la vista/controlador para que podamos hacer las verificaciones del cupón.
27 Sistema de cupones: Consumir el cupón en la compra desde el template de detalle
Vamos a hacer algunos cambios en la vista/template de detalle para que muestre información o estado del cupón.
28 Sistema de cupones: Crear una vista para mostrar el detalle del cupón aplicado
Vamos a crear una vista para mostrar la información del cupón aplicado al precio total.
29 Sistema de cupones: Crear métodos para calcular el descuento
Vamos a crear un par de funciones en el modelo para calcular el porcentaje de descuento en el precio total.
30 Sistema de cupones: Crear un filtro personalizado para el descuento del cupón
Vamos a crear un filtro para poder emplear las funciones definidas anteriormente en el template.
31 Sistema de cupones: Crear columnas adicionales para el pago
Vamos a crear unas columnas para guardar el ID del cupón, total sin descuento, total con descuento cupón y total a pagar
32 Sistema de cupones: Adaptar los cupones para el pago
Vamos a adaptar parte de la aplicación para que se pueda crear la intención de pago con el cupón.
33 Sistema de cupones: Registrar el cupón al momento de hacer el pago
Vamos a registrar un pago con cupón.
34 Sistema de cupones: Generar slug automático para la url limpia de los elementos
Vamos a aprender a generar la url_limpia de los elementos de manera automática con el título.
Extra: Crear una Rest Api manual con Django REST framework
1 Crear aplicación
Vamos a crear la aplicación que vamos a emplear en esta sección.
2 Hacer importaciones iniciales
Vamos a hacer la importación iniciales que vamos a emplear.
3 Demo: Crear función manual que devuelve un json estático
Vamos a aprender a devolver un json estático en Django.
4 Demo: Crear función manual que devuelve un json
Vamos a devolver un json, pero de elementos de nuestra base de datos.
5 Crear función de obtener todos los productos
Vamos a crear una función para obtener todos los elementos de tipo product empleando nuestro Django Rest Framowrk.
6 Crear función para crear un elemento
Vamos a crear la función para crear un elemento.
7 Hacer peticiones al recurso de creación de un elemento
Vamos a realizar peticiones mediante la web de DRF y postman.
8 Obtener el detalle de un elemento
Vamos a crear la funcionalidad para obtener el detalle de un elemento.
9 Actualizar un elemento
Vamos a desarrollar la funcionalidad para actualizar un elemento.
10 Borrar un elemento
Vamos a desarrollar la funcionalidad para borrar un elemento.
11 Crear clases a partir de las funciones anteriores
Vamos a crear una estructura de clases en base al esquema anterior.
12 Probar el CRUD anterior
Vamos a probar el desarrollo anterior en en navegador.
13 Emplear los Mixin para hacer las operaciones CRUD
Vamos a presentar los mixin de DRF para poder reutilizar funcionalidades comunes.
14 Crear clases que hereden los mixins para hacer las operaciones CRUD
Vamos a crear clases para los recursos empleando los mixins.
15 Probar el CRUD anterior
Vamos a probar el desarrollo anterior en en navegador.
16 Crear clases que hereden los generic para hacer las operaciones CRUD
Vamos a crear clases para los recursos empleando los generic.
17 Paginación personalizada: Definir una clase de Paginación
Vamos a crear una paginación personalizada para devolver la la respuesta desde la Rest Api.
18 Agregar autenticación base
Vamos a implementar un sencillo sistema de autenticación para la Rest Api.
19 Agregar permisos de usuario
Vamos a hacer que nuestra Rest Api emplee el mismo sistema de permisos que administramos en Django Admin.
20 Agregar autenticación y permisos de manera global
Vamos a agregar las configuraciones para los permisos y el usuario autenticado de manera global.
21 Autenticación por tokens: Primeros pasos
Vamos a conocer como podemos implementar una Api Rest en base a tokens.
22 Autenticación por tokens: Función para realizar la autenticación y devolver el t
Vamos a crear una función de autenticación en la Rest Api y que la misma devuelva el token.
23 Autenticación por tokens: Proteger recursos y terminar configuraciones
Vamos a crear unas configuraciones a nivel de proyecto y recursos para habilitar el tokenAuth.
Extra: Autenticación personalizada
1 ¿Cómo funciona un módulo para la autenticación personalizada en Django?
Vamos a explicar cuales son los componentes y configuraciones que tenemos que definir para realizar un backend personalizado para la autenticación.
2 Creando una clase para la autenticación por email
Vamos a crear el backend para realizar la autenticación por el email.
Extra: Autenticación Social con Django
1 Introducción
2 Primeros pasos con la autenticación social
Vamos a explicar e instalar un paquete para manejar la autenticación social.
3 Configurar una URL a nuestro proyecto y resolverla de manera local
Vamos a configurar una URL en el SO para que la resuelva de manera local.
4 Comandos e información de ayuda
Esta página servirá de ayuda para los distintos elementos que tengamos que configurar e instalar en nuestro proyecto.
5 Configurar un servidor SSL de desarrollo
Vamos a configurar un SSL de desarrollo para nuestra app.
6 Terminar las configuraciones para la autenticación social
Vamos a terminar las configuraciones para el login social.
7 Autenticación social con Google/Gmail: Crear credenciales
Vamos a crear las credenciales para el login via Google.
8 Autenticación social con Google/Gmail: Configurar en la app
Vamos a crear las credenciales para el login via Google.
9 Posibles problemas con Twitter
Problemas con Twitter
10 Autenticación social con Twitter: Crear credenciales
Vamos a crear las credenciales para el login via Twitter.
11 Autenticación social con Twitter: Configurar en la app
Vamos a probar el login vía Twitter.
12 Autenticación social con Facebook: Crear credenciales
Vamos a crear las credenciales para el login via Facebook.
13 Autenticación social con Facebook: Configurar en la app
Vamos a probar el login via Facebook.
14 Diseño para los botones sociales en la página de login
Vamos a crear un sencillo diseño para nuestro botones para realizar el login.
Trabajando con la sesión: Creando la lógica para el carrito de compras
1 Explicación y configuraciones iniciales
Vamos a explicar qué es lo que vamos a crear en esta sección y hacer las configuraciones iniciales.
2 Crear clase e Inicializar la sección para el carrito
Vamos a crear la clase y la función para inicializar el carrito.
3 Método para agregar un producto al carrito
Vamos a crear la función de add, para agregar productos al carrito.
4 Método para marcar la sección cómo modificada
Vamos a crear una función para indicar que hubo cambios en la sesión.
5 Método para remover un elemento de la sesión
Vamos a crear la función para eliminar un producto de la sesión.
6 Limpiar el carrito de compras
Vamos a crear la función para eliminar todo el carrito de compras.
7 Crear un iterable para la sesión
Vamos a crear la función para hacer iterable nuestro carrito.
8 Calcular el total del carrito
Vamos a crear la función para calcular el total del carrito.
9 Calcular la cantidad de elementos del carrito
Vamos a crear la función para calcular el total de elementos en el carrito.
Implementando el carrito de compras
1 Introducción
2 Agregar un(os) producto(s) al carrito
Vamos a desarrollar la funcionalidad para agregar un producto a nuestro carrito desde la vista de detalle de la tienda.
3 Vista para editar el carrito
Vamos a crear la vista para editar el carrito.
4 Remover un item del carrito
Vamos a crear la función para eliminar productos del carrito.
5 Crear funcion ajax para devolver el total de productos en el carrito
Vamos a crear una función ajax para obtener la cantidad de los productos del carrito.
6 Consumir la cantidad de productos del carrito mediante fetch
Vamos a consumir la función anterior mediante un fetch.
7 Diseño del botón para el carrito de compras
Vamos a crear un sencillo diseño para la opción de carrito de compras.
8 Opcional: Actualizar carrito cada cierto tiempo
Vamos a actualizar el estado del carrito cada cierto tiempo.
9 Crear botón "Ver en el carrito"
Vamos a crear un botón para ver el detalle del producto comprado en el carrito cuando estamos en la vista de detalle del producto y este se encuentra en el carrito.
10 Editar las cantidades del carrito: Crear función ajax
Vamos a crear una función en nuestro Django para actualizar la cantidad de un producto en el carrito.
11 Editar las cantidades del carrito: Crear estructura y lógica
Vamos a crear la lógica en HTML y JavaScript para incrementar o decrementar cantidades del carrito.
12 Editar las cantidades del carrito: Enviar petición
Vamos a enviar la petición para actualizar las cantidades en el servidor.
13 Editar las cantidades del carrito: Soportar múltiples productos
Vamos a adaptar la app para que soporte la edición de cantidades para múltiples productos.
14 Actualizar el precio del carrito al momento de variar las cantidades
Vamos a actualizar los precios al momento de variar las cantidades.
Los Canales (Websockets) en Django: app inicial de chat
1 Introducción
2 Creando el espacio virtual
Vamos a crear un espacio virtual para nuestro nuevo proyecto.
3 Creando un nuevo proyecto
Vamos a instalar Django, crear un nuevo proyecto en Django con nuestro ambiente virtual.
4 Configurando el proyecto y creando la aplicación
Vamos a configurar el proyecto anterior, con MySQL, crear una app y todo lo necesario para dejarlo listo para empezar a desarrollar.
5 Crear modelo de Room y migraciones
Vamos a crear el modelo principal que vamos a emplear en la aplicación y las migraciones.
6 Crear superusuario y data de prueba en el admin
Vamos a crear un usuario superadmin para nuestra app y datos de prueba.
7 Crear página base
Vamos a crear el templete maestro de nuestra app.
8 Crear página para el chat
Vamos a crear la página base para nuestra app de chat.
9 Instalar Channels en Windows - problema con mi instalación
Vamos a hablar sobre la instalación de channels en Windows.
10 Posibles extensiones necesaria para instalar Django Channels en Mac
Si estas empleando Mac es posible que tenas que instalar las herramientas de linea de comando de XCode (Xcode Command Line Tools) para que pueda funcionar; desde tu terminal ejecuta el siguiente comando:
xcode-select --install
11 Instalar channels en Mac
Vamos a hablar sobre la instalación de channels en Mac.
12 Peticiones y respuestas (request/response) ASGI vs WSGI
Vamos a hablar sobre los tipos de servidores web en Python web y Django.
13 Los Customer Django Channels
Vamos a hablar sobre los customers como componente fundamental en Django Channels.
14 Configurar proyecto con channels de Django
Vamos a configurar el proyecto una vez instalado Django Channels.
15 WebSocket servidor: Crear un customer
Vamos a crear el customer y ruteo en Django.
16 WebSocket cliente: Conectarse mediante WS
Vamos a configurar el cliente para enviar un mensaje mediante los web server.
17 Enviar un mensaje
Vamos a enviar un mensaje al servidor y obtener una respuesta de este.
18 Enviar mensajes desde javaScript
Vamos a terminar el ejercicio de chat en una sola dirección.
Los Canales en Django: Channels Layer para comunicar instancias de consumers
1 Introducción
2 ¿Qué es redis?
Redis es un motor de base de datos, pero se diferencia de otros como MySQL a que este se especializa a guardar claves valores en diferentes tipos de datos, como si fueran diccionarios en Python o objetos en JavaScript (aunque también puede guardar datos de manera durable o persistente y también de manera volátil, es decir NO persistente)...
3 Comunicación entre instancias de consumers
Un channel layer o capa de canal en español, es el mecanismo que tenemos para comunicar múltiples instancias de canales; por lo tanto, esto para nosotros en el proyecto que estamos llevando a cabo significa que por ejemplo...
4 Instalar redis en Mac o Linux
Vamos a instalar redis en Mac, aunque puedes emplear pasos similares para instalarlo en Linux.
5 Redis en Windows con Laragon
Vamos a hablar sobre la habilitación de redis en Windows con Laragon.
6 Instalar y configurar channels-redis
Vamos a instalar el paquete para conectar Django Channels con redis.
7 Comandos útiles para redis
Vamos a hablar sobre algunos comandos útiles o que te pueden resultar de utilidad para saber el estado de redis.
8 Comunicación por grupos: Consumer síncrono y métodos asíncronos
Vamos a lograr la comunicación por grupos mediante el canal que configuramos anteriormente.
9 Probar código anterior
Vamos a testear el código definido anteriormente.
10 Reemplazo a redis en ambiente de desarrollo con In-Memory Channel Layer
Vamos a hablar de otra configuración que puedes realizar para trabajar con la comunicación con grupos en vez de redis en modo de desarrollo.
11 Demo: Convertir el consumer a asincrono
Vamos a hablar un poco sobre el proceso de convertir nuestro consumer de sincrono a asincrono.
12 Demo: peticiones asíncronas con ajax de jQuery
Vamos a ver una sencilla demostración empleando la función ajax de jquery para entender el uso de peticiones síncronas y asíncronas.
13 Agregar contexto al mensaje desde el consumer
Vamos a agregar más información al consumer, la fecha y el usuario, aparte del mensaje.
14 Consumir datos desde el cliente
Vamos a consumir los nuevos datos desde el cliente.
15 Dar un formato diferente según el usuario en el chat
Vamos a adaptar un diseño diferente según quien envía el mensaje.
Django Channels: Aplicación de Alertas
1 Introducción
2 Crear aplicación en Vue 3 con Vue Cli
Vamos a crear la app en Vue para la app de alertas con websockets, explicar un poco en qué consiste esta sección.
3 Crear aplicación de alerta en Django
Vamos a crear una app de alertas en Django.
4 Demo: Conectar Vue con el WebSocket existente
Vamos a conectar una app en Vue a nuestro consumer en Django.
5 Demo: Crear un middleware en Django
Vamos a crear un middleware en Django que vamos a tomar como base para crear un middleware para Django Channels.
6 Instalar y configurar Django Rest Framework
Vamos a instalar y configurar DRF
7 Middleware para Django Channels basado en autenticación por token
Vamos a crear un middleware para Django channels y poder emplear la autenticación en la app de Vue.
8 Crear un recurso rest para generar el token mediante DRF
Vamos a crear un recurso rest para generar el token auth.
9 Probar y terminar middleware
Vamos a probar y terminar de configurar el middleware para Django Channels.
10 Crear página de login en Vue y Bootstrap 5
Vamos a instalar algunas dependencias como Bootstrap y axios para crear una sencilla página para el login.
11 Instalar Django Cors Headers
Vamos a instalar el paquete de cors para Django.
12 Consumir el token y modificaciones en el recurso del login
Vamos a consumir el token desde la app en Vue.
13 Guardar token en una propiedad en Vue
Vamos a instalar un paquete para trabajar con las Cookies en Vue.
14 Guardar el token en una cookie
Vamos a instalar un paquete para trabajar con las Cookies en Vue.
15 Cargar y verificar token en la aplicación
Vamos a cargar y verificar si el token existe en la cookie para hacer cambios en la interfaz.
16 Botón para cerrar sesión
Vamos a crear un botón para cerrar la sesión.
17 Construir una caja para enviar un mensaje
Vamos a construir un campo de texto para enviar mensajes mediante WS.
18 Guardar mensajes/alertas en la base de datos
Vamos a crear la estructura necesaria para guardar los mensajes/alertas en la base de datos.
19 Crear recurso rest para obtener los mensajes por el token
Vamos a crear un recurso rest para consumir los mensajes/alertas por el usuario autenticado.
20 Consumir recurso rest de alertas: Crear estructura
Vamos a crear el esqueleto para consumir el recurso de alerta que creamos anteriormente.
21 Consumir recurso rest de alertas: Iterar mensajes
Vamos a iterar y mostrar los mensajes o alertas del usuario.
22 Django: Renombrar views por api
Vamos a renombrar el archivo de views que es donde actualmente tenemos los recursos rest de la rest api porqué en los siguiente vídeos vamos a crear un método para mostrar todas las alertas de los usuarios en un solo lugar.
23 Django: Crear módulo de listado de todas las alertas
Vamos a crear un módulo para mostrar todas las alertas de los usuarios.
24 Django: Crear listado de alertas en el template
Vamos a crear el template para mostrar todas las alertas de los usuarios.
25 Django: Actualizar listado mediante WS
Vamos a actualizar el JS para que podamos emplear el WebSockets y actualizar el listado de manera automática.
Django Channels: Cambios generales en la app Vue
1 Logout al detectar tokenAuth inválido
Vamos a trabajar en desloguear automáticamente cuando el token auth NO sea válido.
Extra: Alpine JS, Introducción
1 Introducción a Alpine.js
Vamos a hablar un poco sobre el framework.
2 Livewire y Alpine
Vamos a comparar ambos frameworks.
3 Preparar un proyecto
Vamos a crear un proyecto para trabajar con Alpine.
4 Mostrar contenido HTML con variables reactivas: x-data, click y x-show
Vamos a conocer el esquema básico, con un componente para mostrar u ocultar bajo demanda.
5 Campos de textos y variables: x-model y x-text
Vamos a mapear una variable a un campo de texto.
6 Atributos: x-bind
Vamos a presentar el bind de atributos.
7 Atributos: múltiples valores
Vamos a trabajar con múltiples valores para los atributos.
8 Atributos: style
Vamos a trabajar con el atributo de estilos.
9 Ciclos y condicionales: x-for y x-if
Vamos a conocer el uso del for y condicional.
10 Bloque de script
Vamos a organizar el código anterior en un bloque de script.
11 Introducción
Introducción
12 Aplicación de todo: Búsqueda
Vamos a crear una aplicación tipo TODO, primero, el campo de búsqueda.
13 Aplicación de todo: Crear Todos
Vamos a crear todos.
14 Marcar todo completada
Vamos a realizar la opción marcar una tarea como completada.
15 Eliminar todo
Vamos a realizar la opción de eliminar un todo.
16 Borrar todos los todos
Vamos a realizar la opción de borrar todos los todos.
17 Modificar un todo
Vamos a realizar la opción de modificar un todo.
18 Configurar Bootstrap 5
Vamos a adaptar el estilo de B5 en la app.
19 Extra: Guardar de manera persistente
Extra: Guardar de manera persistente
20 Publicar en git
21 Atributo ref
Manejo de archivos CSVs y PDFs
1 Introducción
2 Crear un proyecto
Vamos a crear un nuevo proyecto y aplicación y registrar el mismo a nivel del proyecto.
3 Crear un CSV
Vamos a crear un CSV.
4 Leer un archivo
Vamos a leer un CSV mediante Python.
5 Leer un archivo diccionario
Vamos a leer un CSV mediante Python en modo diccionario.
6 Escribir un archivo
Vamos a crear un CSV mediante Python.
7 Escribir un archivo diccionario
Vamos a crear un CSV mediante Python en modo diccionario.
8 Palabra reservada with
Vamos a conocer una variante al momento de trabajar con los archivos, que es indicando el contexto.
9 Crear una aplicación
Vamos a crear una nueva aplicación.
10 Escribir un excel
Vamos a conocer cómo podemos generar un archivo excel.
11 Leer un excel
Vamos a conocer cómo podemos leer un archivo excel.
12 Leer un excel parte dos
Vamos a explicar un poco más el paquete anterior.
13 Weasyprint: Generar un PDF en base a una página web
Generaremos un documento PDF a partir de una página web.
14 Reportlab: Generar un PDF pixel a pixel: Imprimir un texto
Generaremos un documento PDF a partir de un canvas
15 Reportlab: Descargar un archivo
Mostraremos como crear la opción de descarga del PDF
16 Más pruebas con Reportlab
Más pruebas con Reportlab
17 Extra: Descargar archivo
Extra: Descargar archivo
18 Más pruebas con Reportlab
Vamos a realizar algunas pruebas más con Reportlab.
19 Extra: Descargar archivo
Vamos a descargar cualquier archivo desde el proyecto.
20 Publicar en git
Alpine y plugins externos: Sortable
1 Introducción
2 Sortable: Ordenable
Vamos a instalar y configurar un plugin para hacer ordenable el listado.
3 Publicar en git
Aplicación de TO DO con Django y Alpine
1 Introducción
2 Crear espacio virtual, proyecto y aplicación inicial
Vamos a preparar el proyecto y esqueleto inicial.
3 Migrar la aplicación de to do list a Django
Vamos a crear su vista y template para la app de Alpine.
4 Crear modelo y migración para los to do
Vamos a crear el modelo y migración de los to do.
5 Crear una Rest Api para los to do
Vamos a crear una Rest Api en DRF.
6 Instalar axios
Instalar axios
7 Popular listado de todos desde la Rest Api
Vamos a mostrar el listado de to do desde la base de datos en Alpine.
8 Crear to do desde Django
Vamos a crear un to do desde Django y su api.
9 Editar un todo
Vamos a actualizar un to do.
10 Eliminar un to do
Vamos a eliminar un to do en la base de datos.
11 Marcar completado un to do
Vamos a marcar como completado un to do.
12 Reordenación en base a IDs: Rest Api
Vamos a presentar un esquema de ordenación en base a un array de IDs en el servidor.
13 Sobre la reordenación
Vamos a hablar de algunos posibles esquemas de ordenación.
14 Reordenación en base a IDs: Cliente
Vamos a presentar un esquema de ordenación en base a un array de IDs en el cliente.
15 Mostrar todos ordenados
Vamos a mostrar los todos ordenados al momento de ingresar a la página.
16 Eliminar todos los to do
Vamos a eliminar todos los to do.
17 Proteger con autenticación requerida y realizar adaptaciones
Vamos a definir la rest api como protegida con login.
Alpine JS: Otras características
1 Introducción
2 x-ignore, ignorar un bloque de HTML
Veremos cómo ignorar un bloque de HTML.
3 x-teleport, transportar un template
Veremos cómo copiar el contenido de un componente en otra parte del DOM.
4 x-effect, observar cambios en variables
Veremos cómo detectar cambios en variables.
5 $watch, observar propiedades
Veremos cómo crear un observable.
6 x-html, renderizar variables con HTML
Veremos cómo imprimir contenido HTML.
7 $id, crea IDs dinámicos y organizados
Veremos cómo generar IDs dinámicos.
8 $el, referencia al elemento
Veremos cómo referenciar un elemento como si fuera un selector.
9 $store, almacenar datos de manera global
Veremos cómo almacenar datos en el store.
10 $nextTick, Script luego de aplicar cambios en el DOM
Veremos cómo verificar si los cambios fueron realizados por Alpine en el DOM.
11 $dispatch, eventos personalizados
$dispatch, eventos personalizados
12 $root, acceder atributos en el root
Vamos a conocer como acceder a atributos del root del componente.
13 Plugin, máscaras
Vamos a conocer un nuevo plugin para manejar la máscara de los inputs.
14 Publicar en git
- Andrés Cruz
Puedes copiar y pegar alguna de las siguientes opciones y compartir en tu red social favorita:
Opción 1
🟣
Curso y libro desarrollo web con Django 5 y Python 3 + integración con Vue 3, Bootstrap y Alpine.js