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 el Curso en el Blog
Es importante mencionar, que el curso tambien tiene el formato en libro con el 100% del contenido del mismo, es decir, el curso es equivalente al libro.
Django es un framework con muchas opciones, nos permite crear aplicaciones con el lenguaje del momento Python, un lenguaje de programación modular, con una sintaxis impecable que también podemos usarlo en ambiente web.
Nos ofrece un esquema modular entre proyecto y aplicaciones, un conjunto importante de paquetes para extender el ya de por sí, completo framework y con esto, la creación de proyectos escalables.
Es un framework que, al emplear Python, nos trae consigo sus bondades de una sintaxis limpia, clara, precisa, entorno modular y escalable mediante paquetes.
En este curso, vamos a conocer cómo está formado el framework, las características básicas que nos permite Django como framework por excelencia para crear procesos CRUDs, que pasan desde la creación de vistas, templates, conexión con modelos, ruteos, validaciones de formularios, crear middleware entre otros.
En definitiva, tendrás un enorme material a tu disposición, para hacer verdaderas aplicaciones web.
Este curso 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.
Por aquí tienes el listado completo de clases que vamos a cubrir en el libro y curso:
Vamos a hacer unas pruebas para acceder a Python 3.
Vamos a crear el ambiente virtual.
Vamos a instalar el framework web.
Vamos a hablar la diferencia entre proyecto y aplicación en Django.
Vamos a hablar de la estructura del proyecto.
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.
Vamos a presentar algunos comandos importantes en Django.
Vamos a dar una presentación al MTV de Django.
Vamos a configurar VSC para que reconozca los paquetes del proyecto.
Vamos a presentar como usar la consola de Python, ideal para hacer pruebas.
Vamos a conocer como crear los archivos para programar en Python.
Vamos a conocer cómo emplear las variables y sus tipos de datos.
Vamos a conocer cómo funcionan las operaciones matemáticas en Python.
Vamos a conocer cómo funcionan las concatenaciones de String en Python.
Vamos a aprender a realizar casteos o conversión entre distintos tipos.
Vamos a aprender a trabajar con las listas.
Vamos a conocer el uso de los condicionales.
Vamos a conocer el uso de los ciclos while y for.
Daremos los primeros pasos con las funciones en Python
Daremos los primeros pasos con las funciones en Python
Vamos a conocer el uso de los diccionarios.
Vamos a hablar sobre las clases, su propósito, importancia y características bases.
Vamos a crear la primera clase y definir sus atributos y métodos.
Vamos a conocer como trabajar con los métodos constructores.
Vamos a conocer cómo emplear la herencia de clases.
Vamos a crear los modelos principales con los cuales vamos a trabajar.
Vamos a crear un modelo para los comentarios.
Vamos a presentar las migraciones y crear las primeras migraciones y ejecutar en la base de datos.
Vamos a visualizar los datos de la base de datos y analizar los resultados.
Vamos a aprender a revertir las migraciones.
Vamos a renderizar un template.
Vamos a pasar parámetros al template.
Vamos a mostrar cómo emplear carpetas para organizar los templates.
Vamos a dar una presentación de las funciones de ayuda.
Vamos a aprender a crear un formulario de manera manual con HTML y usarlo desde la app en Django.
Vamos a crear un registro en la base de datos mediante una instancia del modelo comentario.
Vamos a aprender a usar los FormModel.
Vamos a conocer algunas operaciones para interactuar con la base de datos que van a ser necesarias para poder hacer el CRUD.
Veremos cómo emplear la herramienta para interactuar con el proyecto.
Vamos a crear el proceso CRUD para el listado.
Vamos a crear el proceso CRUD para editar.
Vamos a crear el proceso CRUD para eliminar.
Vamos a conocer como hacer redirecciones.
Vamos a crear un pull de registros paginados al igual que los enlaces de paginación en el template.
Vamos a aprender a capturar las excepciones que ocurren cuando un registro no existe.
Vamos a aprender a capturar las excepciones que ocurren cuando un listado no existe.
Vamos a aprender a generar datos de prueba.
Vamos a crear el script para ejecutar el script creado anteriormente.
Introducción
Hablaremos un poco sobre la herramienta de Django Admin.
Vamos a crear un usuario superadministrador.
Vamos a asignar el modelo de comentarios a Django Admin.
Vamos a conocer algunos atributos para personalizar la gestión de alguna entidad en Django Admin.
Vamos a conocer algunas opciones de guardado.
Vamos a conocer un decorador para registrar clases.
Vamos a crear la clase admin para los tipos y categorías.
Vamos a crear la clase admin para los elementos.
Vamos a aprender a colocar campos en una sola línea para Django admin.
Vamos a conocer cómo emplear los fieldset para agrupar campos.
Vamos a hablar sobre cómo modificar campos de formulario.
Vamos a crear campos personalizables mediante funciones.
Vamos a conocer cómo cambiar algunas opciones de guardado mediante propiedades.
Vamos a aprender a manejar los modelos en línea en base a la relación FK del mismo.
Vamos a aprender a ejecutar código personalizado antes o después de una operación CRUD.
Vamos a aprender a crear validaciones personalizadas.
Vas a generar el slug de manera automática.
Vamos a aprender a incluir archivos estáticos en Django Admin.
Publicar en Github
Vamos a presentar los forms y modelForms en Django.
Vamos a crear un formulario para los elementos y compararlos con los de tipo ModelForm.
Vamos a crear la vista/controlador para procesar un formulario.
Vamos a crear un modelForm para los elementos de manera demostrativa y compararlo con los formularios de Django.
Vamos a crear el listado para los elementos.
Vamos a dar una introducción a las validaciones y crearemos una.
Vamos a aprender a mostrar los errores de manera individual.
Vamos a corregir una advertencia con las rutas.
Vamos a crear validaciones personalizadas para los formularios.
Vamos a dar un repaso para referenciar campos del formulario de manera individual.
Vamos a dar una introducción a los widgets en Django.
Vamos a aprender a personalizar los atributos en Django mediante los widgets.
Vamos a personalizar los campos de formulario mediante una clase.
Vamos a crear una clase personalizada sobrescribiendo el render para el renderizado del campo.
Vamos a conocer como variar entre tipos de campos HTML en Django.
Vamos a aprender a modificar los atributos de los campos.
Vamos a conocer cómo emplear los widgets que provee Django, como el de calendario y hora.
Vamos a conocer mostrar todos los datos de un formulario con un solo atributo.
Vamos a hablar de lo que vamos a ver en esta sección y lo que hemos visto de los templates.
Vamos a conocer cómo heredar contenido de los templates.
Vamos a aprender a reutilizar la plantilla maestra en otras plantillas.
Vamos a aprender a trabajar con los fragmentos de templates sin parámetros.
Vamos a conocer como pasar parametros en los fragmentos de templates.
Vamos a conocer otras opciones de los bloques en Django.
Vamos a conocer el uso de los condicionales y los for en Django Template.
Vamos a aprender a programar nuestras propias etiquetas.
Vamos a realizar una presentación de los filtros.
Vamos a conocer el primer filtro que permite remover textos.
Vamos a conocer un filtro para formatear las fechas.
Vamos a conocer un filtro para obtener la fecha actual.
Vamos a conocer un filtro para convertir los textos a minúsculas.
Vamos a conocer un filtro para convertir los textos a mayúsculas.
Vamos a conocer un filtro para sumar.
Vamos a conocer un filtro para crear variables en el template.
Vamos a conocer un filtro para imprimir un texto diferente por cada iteración.
Vamos a conocer un filtro para dar un valor por defecto cuando el contenido es nulo o falso.
Vamos a conocer un filtro para medir la longitud de un array o texto.
Vamos a conocer un filtro para imprimir contenido HTML que venga desde la vista.
Vamos a conocer un filtro para convertir un array en texto separados por el carácter.
Vamos a aprender a anidar o emplear varios filtros en una sola operación.
Vamos a aprender a crear nuestros propios filtros.
Vamos a hablar sobre el motor de Jinja 2 para emplearlo en lugar del de Django Template.
Vamos a ver cómo crear un objeto y crear un registro.
Vamos a ver cómo actualizar un registro en vez de crear.
Vamos a ver cómo obtener un pull de registros.
Vamos a conocer cómo emplear los filtros para agregar condiciones WHERE.
Vamos a aprender cómo excluir resultados.
Vamos a aprender a ordenar resultados.
Vamos a aprender a eliminar registros.
Vamos a presentar DRF, su importancia y su uso básico.
Vamos a instalar DRF y crear una app en Django.
Vamos a definir la presentación de los datos.
Vamos a crear la capa que se encarga de procesar la petición del usuario.
Vamos a crear las rutas para la API.
Vamos a realizar algunas pruebas con la rest api.
Vamos a hablar sobre el problema con las relaciones FKs al momento de crear un elemento.
Vamos a crear un viewset personalizado para los elementos.
Vamos a habilitar la paginación para los listados.
Vamos a conocer cómo emplear la opción de many.
Vamos a conocer cómo crear columnas o atributos artificiales en la serialización.
Vamos a conocer cómo crear recursos personalizados en el viewset.
Métodos adicionales
Hablaremos de cómo es posible personalizar los métodos para crear, actualizar y eliminar.
Vamos a presentar el contenido que veremos para autenticar la rest api, los tipos y configuraciones.
Vamos a conocer cómo emplear la autenticación mediante sesión y básica.
Vamos a comenzar las configuraciones para realizar la autenticación con tokens.
Vamos a crear la función de login para generar el token.
Vamos a crear la función de login para generar el token.
Vamos a configurar los CORS para consumir la Rest Api en la siguiente sección desde la app en Vue.
Vamos a instalar Vue CLI.
Vamos a crear un proyecto con proyecto en Vue.
Vamos a instalar y configurar Vue Router
Vamos a instalar axios.
Vamos a crear un repositorio con github.
Vamos a crear una página de listado para las categorías.
Tarea: crear un listado de tipos
Vamos a aprender a navegar entre páginas.
Vamos a hablar sobre Componente de tabla para las categorías y tiposnaive UI.
Vamos a crear un componente de tabla para nuestros listados.
Vamos a crear un contenedor de tipo Space.
Vamos a crear una estructura base de la web.
Vamos a crear el modelo de menú.
Vamos a adaptar el menú para que funcione con un router-link.
Vamos a crear un componente en Vue para el menú.
Vamos a crear un listado con las categorías y tipos en la Rest Api.
Vamos a crear un header con un menú.
Vamos a modificar los routerLink con un diseño de botón.
Vamos a instalar Tailwind.css en en proyecto.
Adaptaremos ciertos detalles visuales con Tailwinds.
Vamos a crear el listado de elementos.
Vamos a dar un mejor agrupado a las rutas.
Vamos a obtener un listado de elementos por categorías.
Vamos a obtener un listado de elementos por tipos.
Vamos a conocer cómo sobrescribir el estilo.
Vamos a crear la vista de detalle.
Vamos a crear el esqueleto inicial para la creación.
Vamos a crear una categoría mediante un formulario en Vue.
Vamos a mostrar los errores del formulario.
Vamos a adaptar el proceso para editar un registro.
Vas a realizar el formulario de crear y editar para los tipos.
Vamos a crear la estructura inicial para el formulario de elementos.
Vamos a completar el formulario de elementos cargando los tipos y categorías desde la rest api.
Vamos a configurar el plugin anterior en el proyecto.
Vamos a habilitar el CSS para nuestro editor.
Vamos a cargar los enlaces para la opción de categoría y tipos en los menús.
Vamos a dar formato a la fecha.
Vamos a realizar redirecciones desde la definición de las rutas.
Vamos a trabajar en otros cambios visuales.
Vamos a trabajar con múltiples router-views.
Vamos a comenzar un nuevo proyecto y con esto la estructura base.
Vamos a crear el modelo inicial para la aplicación
Vamos a crear el formulario inicial para la aplicación.
Vamos a presentar algunas clases basadas en vistas, la de formulario y genérica.
Vamos a conocer la VBC para actualizar.
Vamos a conocer la VBC para crear.
DeleteView: Borrar
Vamos a conocer la VBC para el detalle.
Vamos a conocer la VBC para el listado.
Vamos a presentar la VBC para el login.
Vamos a presentar la VBC para cerrar sesión.
Vamos a presentar la VBC para cambiar la contraseña.
Vamos a presentar la VBC para restablecer la contraseña.
Descargar, cualquier archivo existente
Vamos a hablar del contenido a mostrar en esta sección.
Vamos a crear el proyecto y aplicación inicial.
Vamos a dar los primeros pasos para trabajar con los archivos csv.
Vamos a leer un archivo csv.
Vamos a leer un archivo csv.
Vamos a aprender a escribir un archivo.
Vamos a aprender a escribir un archivo.
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.
Vamos a crear la aplicación para este módulo.
Vamos a aprender a leer un archivo.
Vamos a aprender a escribir un archivo.
Vamos a crear la aplicación para este módulo.
Vamos a aprender a generar un PDF en base a un HTML.
Vamos a conocer como personalizar el tamaño, CSS y generar el PDF mediante un string HTML.
Vamos a aprender a generar un PDF mediante un canvas con reportlab.
Vamos a conocer algunas funciones para dibujar y cambiar colores entre otras características.
Vamos a aprender a descargar cualquier archivo.
Vamos a descargar el PDF generado por el plugin de reporlab.
https://github.com/libredesarrollo/curso-libro-django-archivos
Hablaremos sobre los websockets, servidores WSGI, ASGI, comunicacion sincrona y asincrona.
Vamos a crear el proyecto y la aplicación en Django.
Vamos a configurar el servidor de channels
Vamos a crear los modelos de mensajes y habitaciones y crear algo de data de prueba.
Vamos a crear nuestro primer consumer para recibir y enviar un mensaje.
Vamos a crear los templates y estructura base.
Vamos a crear el JS para abrir el canal del WS.
Vamos a completar la implementación, enviar los mensajes y recibirlos.
Vamos a instalar B5 en el proyecto.
Vamos a configurar el estilo de la aplicación empleando componentes de B5.
Vamos a instalar redis en MacOS empleando DBngin.
Vamos a instalar channels redis.
Vamos a configurar channels redis.
Vamos a realizar los cambios iniciales en la aplicación tipo chat para pasar los a múltiples channels.
Vamos a enviar mensajes en múltiples channels.
Vamos a hacer los cambios en el cliente para mostrar los datos adicionales.
Convertiremos el consumer a tipo asíncrono.
Veremos las instalaciones en Django necesarias, que serían, DRF, Cors.
Creamos el modelo de alertas.
Creamos el serializer de alertas.
Vamos a crear el método de login para generar el token y obtener todos los alerts.
Vamos a probar los métodos anteriores.
Creamos el consumer para las alertas.
Creamos un componente en Vue.
Instalamos y configuramos las dependencias.
Vamos a crear el componente de Login para realizar el login y guardar el token en la cookie.
Vamos a crear el componente de Logout para eliminar el token.
Vamos a implementar la primera parte del envío de mensajes.
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.
Vamos a crear un middleware para la autenticación.
Vamos a terminar la implementación y realizando casos de prueba.
Vamos a mostrar los mensajes de alertas.
Vamos a mostrar el diseño aplicado.
Vamos a implementar la selección de habitaciones para conectarse al canal.
Vamos a definir algunos detalles visuales.
Vamos a bloquear el textarea y mostrar un mensaje de conectando al entrar en el componente de mensajes y se este conectando al WS.
Vamos a destruir el token de autenticación al hacer el logout.
Vamos a conocer la esencia de las pruebas unitarias con un ejemplo.
Vamos a escoger el proyecto y configurarlo para esta sección.
Vamos a hablar sobre cómo vamos a llevar a cabo el resto de la sección.
Vamos a conocer el client de Django para realizar peticiones HTTP a la app.
Vamos a implementar la prueba mediante clases.
Vamos a conocer cómo inicializar datos a nivel de las clases.
Vamos a conocer algunos métodos de tipo assert.
Hablaremos sobre el contexto o ambiente en el cual se realizan las pruebas. https://www.desarrollolibre.net/blog/django/pruebas-unitarias-en-django
Vamos a crear una prueba para el de index.
Vamos a hacer un pequeño repaso del as clases anteriores.
Vamos a realizar la prueba para el proceso de crear la petición de tipo get.
Vamos a realizar la prueba para el proceso de crear la petición de tipo post y crear un comentario.
Vas a realizar la prueba para el proceso de actualizar la petición de tipo get y post.
Vamos a crear la prueba al momento de eliminar un comentario.
Vamos a conocer un método de tipo aserción con la cual evaluaremos la ruta a la cual se redirecciona.
Vamos a conocer un método de tipo aserción con la cual verificamos el template usado.
Vamos a conocer un método de tipo aserción con la cual evalúa la semántica de un contenido HTML.
Vamos a crear una prueba para solamente los formularios en la cual, evaluaremos los campos que tienen que estar definidos.
Vamos a crear la prueba para probar si el formulario es válido.
Vamos a crear la prueba para probar si el formulario es inválido.
Vamos a crear la prueba para probar cuando el formulario guarda un nuevo registro.
Vamos a crear la prueba para probar si el formulario actualiza un registro.
Vamos a cambiar la estructura de carpetas que tenemos en la aplicación.
Vamos a conocer cómo ejecutar determinadas pruebas.
Vamos a crear una prueba para probar el recurso paginado de la api de comentarios.
Vamos a crear una prueba para probar el recurso de detalle de la api de comentarios.
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.
Vamos a crear una prueba para probar el recurso de crear.
Vamos a crear una prueba para probar el recurso de actualizar.
Vamos a crear una prueba para probar el recurso de eliminar.
Vamos a crear una prueba para la serialización de los comentarios.
Vamos a crear dos pruebas para validar los errores de validación.
Vamos a crear la clase con el método de setUp con los datos de prueba.
Vamos a comenzar a realizar la prueba para la paginación.
Vamos a formatear y comparar un objeto para la paginación.
Vamos a crear un elemento en la API.
Vamos a crear una prueba para probar el recurso de actualizar.
Vamos a crear dos pruebas para validar los errores de validación.
Vamos a crear una prueba para probar el recurso de eliminar.
Vamos a crear una prueba para la serialización de los comentarios.
Veremos cómo autenticar al usuario para hacer las pruebas.
Hablaremos sobre cómo generar el request mediante el factory.
Código fuente del capitulo: https://github.com/libredesarrollo/libro-curso-django-base/releases/tag/v0.6
Vamos a crear el proyecto y la aplicación en Django.
Vamos a exponer las rutas para manejar la autenticación en Django.
Vamos a implementar el template para el login.
Vamos a ejecutar las migraciones y crear un superusuario.
Vamos a implementar la lógica para el parámetro next.
Vamos a aprender a usar los archivos estáticos como los CSS, JS, imágenes, entre otros.
Vamos a configurar estas tecnologías en nuestro proyecto.
Crearemos un template maestro.
Instalaremos un paquete para poder modificar los atributos de los campos de formulario.
Maquetamos la página de login.
Crearemos una plantilla para mostrar mensajes.
Maquetamos la página para cambiar la contraseña.
Maquetamos la página de éxito al cambiar la contraseña.
Maquetamos la página para recuperar la contraseña.
Maquetamos la página de éxito al recuperar la contraseña.
Vamos a conocer un servicio para enviar correos en testing.
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.
Maquetamos la página de éxito al cambiar la contraseña.
Crearemos el esbozo para registrar un usuario.
Crearemos el formulario para registrar usuarios.
Crearemos el esbozo para registrar un usuario.
Vamos a crear el formulario para crear el usuario de manera demostrativa empleado la clase de UserCreationForm.
Vamos a crear la vista base de perfil para poder colocar el formulario de login.
Vamos a crear un modelo adicional para personalizar el usuario, especificamente para la carga del avatar.
Vamos a crear el formulario para el avatar.
Vamos a aprender a procesar el formulario.
Vamos a buscar un perfil existente y establecerlo en el formulario cuando este exista.
Vamos a crear el media_root para el proyecto.
Vamos a eliminar la imagen anterior al momento de cargar la imagen.
Vamos a aplicar algunas validaciones a la imagen.
Vamos a realizar los cambios en el modelo.
Vamos a mostrar datos básicos del usuario autenticado.
Voy a mostrarte los cambios realizamos para mostrar la imagen del avatar del usuario.
Vamos a crear el primer signal que se ejecuta cuando se inserta un registro en la BD.
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...
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...
Vamos a enseñar como podemos instalar Python y algunas consideraciones a tener en cuenta.
Vamos a instalar el IDE que vamos a emplear en este curso para desarrollar nuestras aplicaciones en Python y Django.
Vamos a crear la carpeta de nuestro proyecto que vamos a emplear en esta sección para realizar las distintas pruebas y conocer Python.
Vamos a hablar sobre parte del software necesario para este curso.
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.
Vamos a conocer como podemos crear variables en Python.
Vamos a conocer los tipos de datos en Python; string, flotantes, enteros y booleanos.
Vamos a conocer el uso de los operadores matemáticos en Python.
Vamos a dar algunos datos extras sobre el string para contar longitudes, reemplazar ocurrencias etc.
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.
Vamos a presentar una estructura que nos permitirá guardar colecciones de enteros, string, etc en una variable.
Vamos a ver cómo podemos emplear los condicionales en Python.
Vamos a ver el uso de los ciclos for en python para iterar listas.
Vamos a conocer el uso de las funciones en Python, pase de parámetros y retornos de valores.
Vamos a crear nuestra primer clase, así como atributos métodos y constructores y crear una instancia de la misma.
Vamos a ver el uso de los tipos enumerados en Python para crear constantes.
Vamos a conocer la estructura llamada diccionario para crear estructuras de tipo clave valor.
Vamos a conocer cómo podemos manejar los errores en tiempo de ejecución en nuestra app.
Vamos a hablar sobre el uso de los venv en nuestro curso.
Vamos a habilitar y hacer las primeras pruebas con el módulo administrador.
Sobre el resto de la sección
Vamos a crear el primer proyecto en Django mediante la línea de comando.
Vamos a hablar en qué consiste esta organización de proyectos y aplicaciones que hace Django.
Vamos a crear nuestra primera aplicación en Django.
Vamos a crear algo funciona, que sería una vista que devuelva un hola mundo.
Vamos a aprender a configurar la base de datos que de momento, vamos a emplear SQLite.
Vamos a crear nuestros modelos en la app polls creada anteriormente.
Vamos a crear las migraciones gracias a los modelos generados anteriormente.
Vamos a emplear la consola interactiva de Django para hacer las primeras pruebas con nuestro modelo de datos.
Vamos a modificar como se muestra la impresión de los registros por la consola.
Vamos a habilitar y hacer las primeras pruebas con el módulo administrador.
Vamos a crear vistas personalizadas para imprimir el question_id que va a ser pasado como parámetro a estas vistas.
Vamos a conectarnos a nuestra base de datos para obtener los registros de las preguntas y mostrarlas en un string separado por comas.
Vamos a crear un template o vista sencilla para mostrar el listado de preguntas.
Vamos a detallar un poco más lo que hicimos en el ejemplo anterior.
vamos a limpiar un poco más el uso de los template con un nuevo método.
Vamos a comenzar a trabajar con la página de 404 para cuando las question no existan.
Vamos a ver otro mecanismo más corto para mostrar errores 404 cuando un ID no existe.
Vamos a crear la página/template inicial para el detalle.
Vamos a pintar los choice del question seleccionado.
Vamos a crear la vista de resultado.
Vamos a configurar una ruta con nombre para ir de una vista a otra mediante los enlaces.
Vamos a crear un formulario para enviar un voto.
Vamos a hacer la parte del controlador de la vista que desarrollamos anteriormente, sumar un voto.
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.
Vamos a conocer un mecanismo con el cual podemos cargar archivos estáticos en django.
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.
Vamos a conocer como podemos dividir el formulario en secciones.
Vamos a agregar otro modelo, para nuestra app de admin.
Vamos a conocer cómo podemos vincular formularios de choice al momento de definir un formulario de question.
Vamos a definir de manera manual cuales son las columnas que queramos que aparezcan cuando construimos el listado.
Vamos a agregar filtros al listado.
Vamos a agregar un campo de búsqueda al listado.
Vamos a personalizar el Laporta del admin con CSS.
Vamos a crear un nuevo proyecto y aplicación en django.
Vamos a crear los modelos con la estructura que vamos a emplear para la siguiente sección.
Vamos a aprender a configurar una base de datos en MySQL en django.
Vamos a crear las migraciones y luego ejecutarlas para que se generen las tablas en base de datos.
Vamos a registrar los modelos en la app de Admin para poder generar algunos datos de prueba.
Vamos a configurar la función ser para la impresión de un objeto de un modelo.
Vamos a instalar el toolkit para poder configurar una Rest Api en django.
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.
Vamos a crear los recursos tipo CRUD para el resto de los modelos.
Vamos a hacer una pruebas con la Rest API desde el navegador.
Vamos a hacer conexiones a la Rest API mediante postman.y probar todos los recursos tipo CRUD.
Vamos a dar más información sobre los archivos creados. que más pueden hacer para nuestra Rest Api.
Vamos a crear un método personalizado para obtener los elementos dado la categoría.
Vamos a replicar el desarrollo anterior para los tipos.
Introducción a la sección
Vamos a dar algunos detalles sobre Vue.
Vamos a instalar el ecosistema necesario para desarrollar nuestras apps con Vue Cli.
Vamos a crear nuestro primer proyecto mediante Vue Cli.
Vamos a explicar la estructura de un proyecto generado mediante la Vue Cli.
Vamos a crear nuestro Hola Mundo en Vue.
Vamos a presentar los ciclos, para iterar elementos.
Vamos a crear un método que imprima un mensaje por consola en base a un evento click de nuestro usuario.
Vamos a presentar los fetch, como mecanismo para conectarnos mediante HTTP y conseguir datos de manera asíncrona.
Vamos a superar el bloqueo que tenemos al realizar una petición a otro servidor en django.
Vamos a consumir un recurso de la Rest de django mediante 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.
Vamos a instalar Vue Bootstrap para mejorar el aspecto de nuestra app.
Vamos a crear nuestro primer componente en Bootstrap Vue que sería el de la carta, para nuestro listado.
Vamos a crear un container para nuestro contenido.
Vamos a ver una demostración, y vamos. a crear una tabla mediante Vue Bootstrap.
Vamos a crear un navbar para nuestra app mediante Vue Bootstrap.
Vamos a crear un boceto para la página de detalle.
Vamos a construir una web SPA con Vue Router.
Vamos a crear un enlace para poder navegar entre componentes de la web SPA.
Vamos a crear un componente de listado para todas las categorías.
Vamos a crear un componente de listado para los tipos.
Vamos a crear todos los enlaces de categorías y tipos anteriores en nuestro navbar.
Vamos a crear el listado de elementos seleccionado una categoría y conectarnos a nuestra Rest para obtener el listado.
Vamos a crear un componente de listado genérico.
Vamos a modificar el componente de listado principal con el componente genérico de listado.
Vamos a replicar el componente de listado genérico para los tipos.
Vamos a presentar los watch para observar cambios sobre propiedades u otros elementos.
Vamos a alinear los listados de categorías y tipos.
Vamos a mejorar la presentación de nuestro listado genérico para los elementos.
Vamos a mejorar la presentación del componente de detalle.
Vamos a dar más te talle sobre la categoría seleccionada indicando a qué tipo y categoría pertenece.
Vamos a construir más peticiones para obtener el detalle de la categoría y tipo.
Vamos a instalar axios, que es un cliente similar al fetch que empleamos para hacer las peticiones para ver una variante.
Vamos a hacer un ejercicio para hacer peticiones mediante axios.
Vamos a corregir un error que quedó pendiente al integrar los enlaces de categoría y tipo en el detalle del elemento.
Vamos a hablar sobre lo construido hasta este punto y que necesitamos para seguir avanzando.
Vamos a crear una nueva app con la cual vamos a trabajar con comentarios.
Vamos a crear el modelo inicial.
Vamos a crear la función y vista asociada a la vista de index, el listado.
Vamos a crear un formulario para agregar comentarios empleando Django Form Model.
Vamos a personalizar atributos del formulario.
Vamos a definir el resto del cuerpo para que funcione el formulario.
Vamos a validar el formulario y hacer el procesamiento del mismo para luego guardar el mismo en BD.
Vamos a aprender a hacer una redirección con los shortcut de django.
Vamos a crear otro método, basado en el de creación para actualizar un comentario mediante los formularios de django.
Vamos a conocer cómo emplear un atributo de los save para guardar los datos en la base de datos o no.
Vamos a personalizar el método de save para hacer operaciones previas antes de guardar.
Vamos a ver cómo podemos obtener y mostrar los errores del formulario.
Vamos a crear un formulario personalizado o genérico en django.
Vamos a ver como podemos ver los errores en los formularios y realizar algunas pruebas más.
Vamos a crear un formulario un poco más completo con otros tipos de campos.
Vamos a instalar el toolkit de Bootstrap para nuestra aplicación.
Vamos a instalar un módulo adicional de Python para que nuestro formulario pueda tomar el estilo de Bootstrap.
Vamos a crear un container para nuestro formulario.
Vamos a mostrar los errores agrupados en un listado.
Vamos a trabajar con las validaciones sobre los campos de formulario.
Vamos a trabajar con los widgets, que viene siendo el mecanismo que tenemos para personalizar el campo de formulario.
Vamos a crear un par de campos para trabajar con los archivos y booleanos.
Vamos a crear un par de campos para trabajar con los archivos y booleanos.
Vamos a procesar todo el contacto de formulario y guardar los datos en la base de datos.
Vamos a crear un sencillo select o campo de selección con datos estáticos de una tupla.
Vamos a crear un modelo para manejar el tipo de contacto.
Vamos a presentar el uso de los campos de selección atados a un modelo o consulta.
Vamos a crear otro listado genérico para trabajar con el sexo y una tupla estática.
Vamos a permitir que la carga de archivos sea opcional.
Vamos a crear una redirección al momento de crear el contacto.
Vamos a conocer los mensajes flash en django.
Vamos a mejorar el aspecto de los mensajes mostrados vía flash.
Vamos a mejorar el aspecto del formulario.
Vamos a aplicar algunos cambios finales sobre el formulario.
Vamos a conocer una directiva para incluir fragmentos de vista en otra vista.
Vamos a empezar a definir un template maestro para la app de coments.
Vamos a conocer el uso de los block y extends para crear una plantilla maestra.
Vamos a extender el uso de la plantilla maestra.
Vamos a crear un header o navbar que nos ofrece en Bootstrap 4.
Vamos a activar el JavaScript de Bootstrap 4 para que funcionen ciertos componentes del navbar.
Vamos a crear un sencillo footer para la app.
Vamos a presentar una etiqueta para escapar o no contenido HTML y JavaScript.
Vamos a aprender a crear comentarios de distintos propósitos en django template.
Vamos a presentar la etiqueta cycle.
Vamos a presentar los filtros y trabajar con algunos de ellos.
Vamos a hablar un poco más de qué más podemos hacer con los template en django.
Vamos a crear una relación entre muchos a uno opcional entre los comentarios y los elementos.
Vamos a dar más detalle al elemento, con los modelos relacionados.
Vamos a obtener todo el detalle de la categoría y del tipo en la Rest.
Vamos a habilitar el recurso tipo Rest para los comentarios de los elementos.
Vamos a habilitar el modo solo lectura para las categorías y los tipos.
Vamos a habilitar la paginación para toda la Rest Api.
Vamos a modificar el recurso para los comentarios para que solamente devuelvan los que tengan establecidos un elemento.
Vamos a implementar un conjunto de métodos para obtener todos los registros de nuestros modelos.
Vamos a obtener el detalle de un elemento por la url_limpia.
Vamos a replicar el ejercicio anterior en el resto de los métodos.
Vamos a conocer como podemos crear variables personalizadas para nuestro json.
Script para definir serializado
Vamos a explicar como funciona y cómo podemos configurar la aplicación de autenticación que nos ofrece Django.
Vamos a crear una aplicación para el módulo de usuario.
Vamos a configurar el template inicial para el login.
Vamos a adaptar un diseño existente para la página de login.
Vamos a personalizar los errores para que tomen el alert de Bootstrap.
Vamos a personalizar los errores para que se encuentren definidos en una página aparte.
Vamos a aprender a pasar datos o variables de manera opcional.
Vamos a personalizar la URL de redirección del logout.
Vamos a personalizar el template para cambiar la 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.
Vamos a personalizar la vista (formulario) de confirmación de cambiar la contraseña.
Vamos a configurar la vista de confirmación para recuperar la contraseña.
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.
Vamos a configurar la página para recuperar la contraseña.
Vamos a configurar la página de confirmación de recuperar la contraseña.
Vamos a conocer el mecanismo que tenemos que seguir para obtener la información del usuario autenticado.
Vamos a conocer como podemos preguntar si el usuario está o no autenticado.
Vamos a aprender a proteger recursos para que solamente puedan ser consumidos si el usuario está autenticado.
Vamos a hacer una demostración de cómo emplear la variable next desde el login.
Vamos a crear la vista base para registrar un usuario.
Vamos a procesar la solicitud para registrar un usuario.
Vamos a hacer el proceso de autenticación tras el registro.
Vamos a registrar un nuevo campo para el email en el formulario de UserCreationForm.
Vamos a registrar el nuevo cambio (email) en la base de datos.
Vamos a hacer un cambio de nombre en el archivo de los formularios.
Vamos a colocar los enlaces correctos entre las vistas de login y registrar.
Vamos a hacer un acomodo visual en la vista de perfil.
Vamos a crear la estructura base para cargar un avatar, que sería, un nuevo modelo, la vista base y el formulario.
Vamos a procesar la carga del archivo o avatar.
Vamos a establecer el ID del avatar al momento de guardar el registro.
Vamos a establecer el ID del avatar al momento de guardar el registro.
Vamos a aprender a hacer validaciones sobre la imagen que estamos cargando, específicamente por el alto y largo.
Vamos a aprender a hacer validaciones sobre la imagen que estamos cargando, específicamente el tipo.
Vamos a aprender a hacer validaciones sobre la imagen que estamos cargando, específicamente por el tamaño.
Vamos a aprender a consultar el perfil del usuario desde el request.
Vamos a configurar el MEDIA_URL del proyecto que es empleado cuando cargamos un archivo.
Vamos a borrar el archivo o avatar anterior al momento de que se cargue el nuevo.
Vamos a presentar la imagen en la vista.
Vamos a mejorar el aspecto de la imagen cargada y verificar si el perfil existe.
Vamos a cargar acomodar el estilo del formulario para que tome un mejor aspecto.
Vamos a implementar el código JavaScript para variar el contenido del label según el archivo cargado.
Vamos a hablar sobre los ambientes virtuales en Python y cómo emplearlos en el curso.
Vamos a aprender a enviar un email mediante en Django.
Ahora vamos a enviar el mismo email pero con contenido HTML.
Vamos a conocer cómo nosotros podemos crear un sistema de paginación.
Vamos a ver un caso práctico para paginar los registros de los comentarios.
Vamos a construir un sistema genérico de paginación del listado.
Vamos a adaptar el trabajo anterior para que tenga un diseño de Bootstrap 4.
Vamos a conocer cómo podemos trabajar con los logs en Django.
Vamos a conocer el uso de la criptografía para firmar textos.
Vamos a ver un ejemplo sencillo para exportar a CSV.
CSV: Exportar nuestros contactos
Vamos a comenzar con la traducción de nuestra app y vamos a conocer los mecanismos necesarios para hacer esta labor.
Vamos a generar los textos que queremos traducir.
Vamos a generar los archivos de traducción a partir de los textos.
Vamos a probar la app y terminar de configurar la misma para que funciona con los archivos de traducción.
Vamos a imprimir los string de traducción en un template.
Vamos a conocer el uso de la sección en django para registrar datos.
Vamos a crear una nueva app y registrarla en nuestro proyecto.
Vamos a crear un listado inicial de elementos.
Vamos a mejorar el aspecto de nuestro listado.
Vamos a crear una vista de detalle, empleando las vistas genéricas de Django.
Vamos a consumir la vista de detalle por el slug o la url limpia.
Vamos a consumir una página tanto por el slug como por la pk.
Vamos a crear el HTML de un formulario para realizar una búsqueda.
Vamos a crear la parte funcional en nuestra Views, para realizar la búsqueda.
Vamos a preservar los valores seleccionados por nuestro usuario en el filtro en HTML.
Vamos a conocer que necesitamos para realizar un pago vía PayPal.
Sobre la SDK de PayPal empleada para desarrollar el proyecto
Vamos a crear una función para realizar un pago de prueba.
Vamos a agregar una columna de precio para nuestro modelo de elementos.
Vamos a configurar el pago PayPal a un producto.
Vamos a crear una página para mostrar el link de pago.
Vamos a crear un modelo para guardar los pagos realizados vía PayPal.
Vamos a crear un método constructor que se encargue de crear un objeto Payment.
Vamos a verificar que el usuario esté autenticado en ciertos procesos claves.
Vamos a procesar la respuesta de PayPal en nuestra función.
Vamos a definir las credenciales de PayPal en el archivo de settings.
Vamos a capturar una posible excepción al momento de comunicarnos con PayPal.
Vamos a hablar un poco sobre la SDK actual de PayPal y su integración con nuestro proyecto.
Vamos a procesar la respuesta de PayPal una vez realizado el pago de un producto.
Vamos a procesar la respuesta de PayPal una vez realizado el pago de un producto.
Vamos a corregir el constructor para crear un Payment.
Vamos a terminar el diseño inicial de nuestra página de detalle.
Vamos a crear la vista inicial para mostrar todos los pagos.
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.
Vamos a mostrar el enlace en el listado para ver el detalle de una compra.
Vamos a ver solamente los pagos del usuario autenticado.
Vamos a ver solamente los elementos de tipo producto.
Vamos a aprender a crear imágenes de pequeñas dimensiones fácilmente.
Vamos a aprender a exportar datos desde nuestro módulo de admin; primero veremos cómo realizar la instalación.
Vamos a aprender a exportar datos desde nuestro módulo de admin.
Vamos a aprender a importar datos desde nuestro módulo de admin.
Vamos a aprender un sencillo mecanismo que nos permitirá obtener datos fácilmente de lo que ocurre en nuestra app.
Vamos a hablar sobre un paquete que ya empleamos para construir una Api Rest en Django.
Vamos a hablar sobre el paquete que empleamos para personalizar el estilo de los formularios en Django.
Vamos ha hablar sobre este paquete que permite habilitar las peticiones de apps de terceros a Django.
Vamos a instalar y configurar un paquete para personalizar el layout de la app de admin.
Vamos a definir un modelo para poder cargar imágenes de productos.
Vamos a crear las relaciones necesarias para cargar imágenes desde la app de admin.
Vamos a aprender a escalar y cortar las imágenes que estamos cargando en un momento dado.
Vamos a conocer los signals, para escuchar eventos de nuestros procesos CRUD asociados a un modelo.
Vamos a eliminar las imágenes una vez borrado el registro principal.
Vamos a eliminar las imágenes una vez cambiada el registro principal.
Vamos a borrar la imagen extra al momento de cambiar o eliminar el registro.
Vamos a hablar sobre el template que vamos a tomar de referencia.
Vamos a crear un archivo CSS custom para nuestra tienda.
Vamos a ver de donde podemos obtener imágenes gratis y libres para nuestro proyecto.
Vamos a adaptar la imagen personalizada que generamos mediante nuestra aplicación para que se ajuste a la del template o página boceto.
Vamos a guardar el nombre de la imagen y la extensión en columnas apartes.
Vamos a guardar la ruta relativa de la imagen.
Vamos a cargar algunas imágenes que vamos a emplear para desarrollar la app.
Vamos a empezar la adaptación de la tienda en línea en django a la página del template.
Vamos a colocar la imagen principal del elemento en nuestro listado.
Vamos a colocar la imagen principal del elemento en nuestro listado.
Vamos a aprender cómo podemos obtener también las imágenes desde el batch principal.
Vamos a validar que al menos exista una imagen para el listado y colocar una imagen por defecto en caso de que no exista.
Vamos a darle estilo al filtro o formulario para la búsqueda.
Vamos a cambiar algunos colores base.
Vamos a instalar una fuente tipográfica.
Vamos a definir un título con un estilo para el index.
Vamos a variar el diseño para los enlaces de paginación.
Vamos a crear un carrusel o una galería para las imágenes del producto seleccionado.
Vamos a dejar seleccionado una imagen por defecto.
Vamos a definir un conjunto de indicadores para el carrusel.
Vamos a organizar el contenido de nuestra página de detalle en columnas.
Vamos a variar o adaptar el diseño para la vista de detalle.
Vamos a instalar una iconografía para nuestra app.
Vamos a definir algunos íconos para nuestra app.
Vamos a definir el modelo y la tabla para los comentarios.
Vamos a crear la clase para gestionar los comentarios desde el admin.
Vamos a crear el formulario para agregar los comentarios.
Vamos a procesar el comentario enviado por el usuario.
Vamos a pintar los comentarios en el template.
Ahora vamos a pintar el formulario en el template.
Vamos a tocar ciertos aspectos visuales y funcionales en el bloque de comentarios que estamos hablando.
Vamos a colocar los errores del formulario en un template aparte.
Vamos a realizar unas validaciones para que un usuario autenticado pueda saltarse algunos datos.
Vamos a instalar una aplicación para hacer etiquetables los modelos que definamos.
Vamos a agregar algunas etiquetas a algunos elementos.
Vamos a aprender a trabajar con los tags programáticamente.
Vamos a colocar los tags dentro de la vista de detalle.
Vamos a crear el filtro por tags para la vista de listado.
Vamos a hacer las configuraciones iniciales para mantener el sitemap.
Vamos a preparar el modelos de elementos para poder emplearlo al momento de generar el sitemap.
Vamos a crear finalmente el sitemap.
Vamos a crear la estructura para manejar los cupones para una compra.
Vamos a crear la relación con el admin.
Vamos a crear algunos cupones con los cuales trabajar.
Vamos a crear el formulario que vamos a emplear para procesar el cupón.
Vamos a pintar el formulario en nuestro template de detalle del elemento.
Vamos a dar un poco de estilo al formulario del cupón.
Vamos a desarrollar la función para procesar el cupón.
Vamos a modificar la vista/controlador para que podamos hacer las verificaciones del cupón.
Vamos a hacer algunos cambios en la vista/template de detalle para que muestre información o estado del cupón.
Vamos a crear una vista para mostrar la información del cupón aplicado al precio total.
Vamos a crear un par de funciones en el modelo para calcular el porcentaje de descuento en el precio total.
Vamos a crear un filtro para poder emplear las funciones definidas anteriormente en el template.
Vamos a crear unas columnas para guardar el ID del cupón, total sin descuento, total con descuento cupón y total a pagar
Vamos a adaptar parte de la aplicación para que se pueda crear la intención de pago con el cupón.
Vamos a registrar un pago con cupón.
Vamos a aprender a generar la url_limpia de los elementos de manera automática con el título.
Vamos a crear la aplicación que vamos a emplear en esta sección.
Vamos a hacer la importación iniciales que vamos a emplear.
Vamos a aprender a devolver un json estático en Django.
Vamos a devolver un json, pero de elementos de nuestra base de datos.
Vamos a crear una función para obtener todos los elementos de tipo product empleando nuestro Django Rest Framowrk.
Vamos a crear la función para crear un elemento.
Vamos a realizar peticiones mediante la web de DRF y postman.
Vamos a crear la funcionalidad para obtener el detalle de un elemento.
Vamos a desarrollar la funcionalidad para actualizar un elemento.
Vamos a desarrollar la funcionalidad para borrar un elemento.
Vamos a crear una estructura de clases en base al esquema anterior.
Vamos a probar el desarrollo anterior en en navegador.
Vamos a presentar los mixin de DRF para poder reutilizar funcionalidades comunes.
Vamos a crear clases para los recursos empleando los mixins.
Vamos a probar el desarrollo anterior en en navegador.
Vamos a crear clases para los recursos empleando los generic.
Vamos a crear una paginación personalizada para devolver la la respuesta desde la Rest Api.
Vamos a implementar un sencillo sistema de autenticación para la Rest Api.
Vamos a hacer que nuestra Rest Api emplee el mismo sistema de permisos que administramos en Django Admin.
Vamos a agregar las configuraciones para los permisos y el usuario autenticado de manera global.
Vamos a conocer como podemos implementar una Api Rest en base a tokens.
Vamos a crear una función de autenticación en la Rest Api y que la misma devuelva el token.
Vamos a crear unas configuraciones a nivel de proyecto y recursos para habilitar el tokenAuth.
Vamos a explicar cuales son los componentes y configuraciones que tenemos que definir para realizar un backend personalizado para la autenticación.
Vamos a crear el backend para realizar la autenticación por el email.
Vamos a explicar e instalar un paquete para manejar la autenticación social.
Vamos a configurar una URL en el SO para que la resuelva de manera local.
Esta página servirá de ayuda para los distintos elementos que tengamos que configurar e instalar en nuestro proyecto.
Vamos a configurar un SSL de desarrollo para nuestra app.
Vamos a terminar las configuraciones para el login social.
Vamos a crear las credenciales para el login via Google.
Vamos a crear las credenciales para el login via Google.
Problemas con Twitter
Vamos a crear las credenciales para el login via Twitter.
Vamos a probar el login vía Twitter.
Vamos a crear las credenciales para el login via Facebook.
Vamos a probar el login via Facebook.
Vamos a crear un sencillo diseño para nuestro botones para realizar el login.
Vamos a explicar qué es lo que vamos a crear en esta sección y hacer las configuraciones iniciales.
Vamos a crear la clase y la función para inicializar el carrito.
Vamos a crear la función de add, para agregar productos al carrito.
Vamos a crear una función para indicar que hubo cambios en la sesión.
Vamos a crear la función para eliminar un producto de la sesión.
Vamos a crear la función para eliminar todo el carrito de compras.
Vamos a crear la función para hacer iterable nuestro carrito.
Vamos a crear la función para calcular el total del carrito.
Vamos a crear la función para calcular el total de elementos en el carrito.
Vamos a desarrollar la funcionalidad para agregar un producto a nuestro carrito desde la vista de detalle de la tienda.
Vamos a crear la vista para editar el carrito.
Vamos a crear la función para eliminar productos del carrito.
Vamos a crear una función ajax para obtener la cantidad de los productos del carrito.
Vamos a consumir la función anterior mediante un fetch.
Vamos a crear un sencillo diseño para la opción de carrito de compras.
Vamos a actualizar el estado del carrito cada cierto tiempo.
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.
Vamos a crear una función en nuestro Django para actualizar la cantidad de un producto en el carrito.
Vamos a crear la lógica en HTML y JavaScript para incrementar o decrementar cantidades del carrito.
Vamos a enviar la petición para actualizar las cantidades en el servidor.
Vamos a adaptar la app para que soporte la edición de cantidades para múltiples productos.
Vamos a actualizar los precios al momento de variar las cantidades.
Vamos a crear un espacio virtual para nuestro nuevo proyecto.
Vamos a instalar Django, crear un nuevo proyecto en Django con nuestro ambiente virtual.
Vamos a configurar el proyecto anterior, con MySQL, crear una app y todo lo necesario para dejarlo listo para empezar a desarrollar.
Vamos a crear el modelo principal que vamos a emplear en la aplicación y las migraciones.
Vamos a crear un usuario superadmin para nuestra app y datos de prueba.
Vamos a crear el templete maestro de nuestra app.
Vamos a crear la página base para nuestra app de chat.
Vamos a hablar sobre la instalación de channels en Windows.
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
Vamos a hablar sobre la instalación de channels en Mac.
Vamos a hablar sobre los tipos de servidores web en Python web y Django.
Vamos a hablar sobre los customers como componente fundamental en Django Channels.
Vamos a configurar el proyecto una vez instalado Django Channels.
Vamos a crear el customer y ruteo en Django.
Vamos a configurar el cliente para enviar un mensaje mediante los web server.
Vamos a enviar un mensaje al servidor y obtener una respuesta de este.
Vamos a terminar el ejercicio de chat en una sola dirección.
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)...
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...
Vamos a instalar redis en Mac, aunque puedes emplear pasos similares para instalarlo en Linux.
Vamos a hablar sobre la habilitación de redis en Windows con Laragon.
Vamos a instalar el paquete para conectar Django Channels con redis.
Vamos a hablar sobre algunos comandos útiles o que te pueden resultar de utilidad para saber el estado de redis.
Vamos a lograr la comunicación por grupos mediante el canal que configuramos anteriormente.
Vamos a testear el código definido anteriormente.
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.
Vamos a hablar un poco sobre el proceso de convertir nuestro consumer de sincrono a asincrono.
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.
Vamos a agregar más información al consumer, la fecha y el usuario, aparte del mensaje.
Vamos a consumir los nuevos datos desde el cliente.
Vamos a adaptar un diseño diferente según quien envía el mensaje.
Vamos a crear la app en Vue para la app de alertas con websockets, explicar un poco en qué consiste esta sección.
Vamos a crear una app de alertas en Django.
Vamos a conectar una app en Vue a nuestro consumer en Django.
Vamos a crear un middleware en Django que vamos a tomar como base para crear un middleware para Django Channels.
Vamos a instalar y configurar DRF
Vamos a crear un middleware para Django channels y poder emplear la autenticación en la app de Vue.
Vamos a crear un recurso rest para generar el token auth.
Vamos a probar y terminar de configurar el middleware para Django Channels.
Vamos a instalar algunas dependencias como Bootstrap y axios para crear una sencilla página para el login.
Vamos a instalar el paquete de cors para Django.
Vamos a consumir el token desde la app en Vue.
Vamos a instalar un paquete para trabajar con las Cookies en Vue.
Vamos a instalar un paquete para trabajar con las Cookies en Vue.
Vamos a cargar y verificar si el token existe en la cookie para hacer cambios en la interfaz.
Vamos a crear un botón para cerrar la sesión.
Vamos a construir un campo de texto para enviar mensajes mediante WS.
Vamos a crear la estructura necesaria para guardar los mensajes/alertas en la base de datos.
Vamos a crear un recurso rest para consumir los mensajes/alertas por el usuario autenticado.
Vamos a crear el esqueleto para consumir el recurso de alerta que creamos anteriormente.
Vamos a iterar y mostrar los mensajes o alertas del usuario.
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.
Vamos a crear un módulo para mostrar todas las alertas de los usuarios.
Vamos a crear el template para mostrar todas las alertas de los usuarios.
Vamos a actualizar el JS para que podamos emplear el WebSockets y actualizar el listado de manera automática.
Vamos a trabajar en desloguear automáticamente cuando el token auth NO sea válido.
Vamos a hablar un poco sobre el framework.
Vamos a comparar ambos frameworks.
Vamos a crear un proyecto para trabajar con Alpine.
Vamos a conocer el esquema básico, con un componente para mostrar u ocultar bajo demanda.
Vamos a mapear una variable a un campo de texto.
Vamos a presentar el bind de atributos.
Vamos a trabajar con múltiples valores para los atributos.
Vamos a trabajar con el atributo de estilos.
Vamos a conocer el uso del for y condicional.
Vamos a organizar el código anterior en un bloque de script.
Introducción
Vamos a crear una aplicación tipo TODO, primero, el campo de búsqueda.
Vamos a crear todos.
Vamos a realizar la opción marcar una tarea como completada.
Vamos a realizar la opción de eliminar un todo.
Vamos a realizar la opción de borrar todos los todos.
Vamos a realizar la opción de modificar un todo.
Vamos a adaptar el estilo de B5 en la app.
Extra: Guardar de manera persistente
Vamos a crear un nuevo proyecto y aplicación y registrar el mismo a nivel del proyecto.
Vamos a crear un CSV.
Vamos a leer un CSV mediante Python.
Vamos a leer un CSV mediante Python en modo diccionario.
Vamos a crear un CSV mediante Python.
Vamos a crear un CSV mediante Python en modo diccionario.
Vamos a conocer una variante al momento de trabajar con los archivos, que es indicando el contexto.
Vamos a crear una nueva aplicación.
Vamos a conocer cómo podemos generar un archivo excel.
Vamos a conocer cómo podemos leer un archivo excel.
Vamos a explicar un poco más el paquete anterior.
Generaremos un documento PDF a partir de una página web.
Generaremos un documento PDF a partir de un canvas
Mostraremos como crear la opción de descarga del PDF
Más pruebas con Reportlab
Extra: Descargar archivo
Vamos a realizar algunas pruebas más con Reportlab.
Vamos a descargar cualquier archivo desde el proyecto.
Vamos a instalar y configurar un plugin para hacer ordenable el listado.
Vamos a preparar el proyecto y esqueleto inicial.
Vamos a crear su vista y template para la app de Alpine.
Vamos a crear el modelo y migración de los to do.
Vamos a crear una Rest Api en DRF.
Instalar axios
Vamos a mostrar el listado de to do desde la base de datos en Alpine.
Vamos a crear un to do desde Django y su api.
Vamos a actualizar un to do.
Vamos a eliminar un to do en la base de datos.
Vamos a marcar como completado un to do.
Vamos a presentar un esquema de ordenación en base a un array de IDs en el servidor.
Vamos a hablar de algunos posibles esquemas de ordenación.
Vamos a presentar un esquema de ordenación en base a un array de IDs en el cliente.
Vamos a mostrar los todos ordenados al momento de ingresar a la página.
Vamos a eliminar todos los to do.
Vamos a definir la rest api como protegida con login.
Veremos cómo ignorar un bloque de HTML.
Veremos cómo copiar el contenido de un componente en otra parte del DOM.
Veremos cómo detectar cambios en variables.
Veremos cómo crear un observable.
Veremos cómo imprimir contenido HTML.
Veremos cómo generar IDs dinámicos.
Veremos cómo referenciar un elemento como si fuera un selector.
Veremos cómo almacenar datos en el store.
Veremos cómo verificar si los cambios fueron realizados por Alpine en el DOM.
$dispatch, eventos personalizados
Vamos a conocer como acceder a atributos del root del componente.
Vamos a conocer un nuevo plugin para manejar la máscara de los inputs.
- Andrés Cruz
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter
Acepto recibir anuncios de interes sobre este Blog.
!Cursos desde!
10$
En Udemy
Quedan 4d 17:42!
!Cursos desde!
4$
En Academia
Ver los cursos!Libros desde!
1$
Ver los libros