Bienvenida

1

Todo lo que aprender谩s sobre Django

Cimientos

2

Arquitectura de una aplicaci贸n

3

The Twelve-Factor App

4

Codebase: Settings modular

5

Codebase: Dependencias y archivos de docker

6

Codebase: Docker

7

Setups alternativos

Modelos

8

Herencia de modelos

9

Proxy models

10

App de usuarios

11

Organizando modelos en un paquete de Django

12

Creando el modelo de perfil de usuario

13

Soluci贸n del reto: arreglando la migraci贸n de users a user

14

Aplicaci贸n y modelo de c铆rculos

15

Migraciones y admin de c铆rculos

Introducci贸n a Django REST Framework

16

Aprende c贸mo construir tu propio API con Django Rest Framework

17

Vistas, URLs y Parsers de DRF

18

Serializers

19

Buenas pr谩cticas para el dise帽o de un API REST

20

Request, response, renderers y parsers

Real DRF

21

Autenticaci贸n y tipos de autenticaci贸n

22

APIView

23

Creando el token de autorizaci贸n

24

User sign up

25

Limitar login a usuarios con cuenta verificada

26

Configurar env铆o de email

27

Instalar PyJWT y generar tokens

28

Verificar cuenta usando JWT

29

Actualizar modelo de circle (membership)

30

Crear CircleViewSet

31

A帽adiendo autorizaci贸n y paginaci贸n

32

Creaci贸n de circulos

33

Update de c铆rculo, custom permissions y DRF Mixins

34

Migraci贸n de vistas de usuarios a ViewSets

35

Detalle de usuario

36

Update profile data

37

List members - Recursos anidado

38

Retrieve destroy member

39

Modelo de invitaciones y manager

40

Obtener invitaciones de un miembro

41

Unirse a grupo

42

Filtrado

43

App de rides y modelos

44

Implementar la publicaci贸n de un ride

45

Validaci贸n de campos de un serializer

46

Listado de rides

47

Editar un ride

48

Unirse a viaje

49

Terminar viaje

50

Calificar viaje

Tareas as铆ncronas

51

驴Qu茅 es Celery?

52

Creando tarea as铆ncrona

53

Creando tarea peri贸dica

Testing

54

Python unittest y Django TestCase

55

DRF APITestCase

Django Admin

56

Admin actions: Modificar datos de un query

57

Admin actions: Regresando una respuesta HTTP

Deployment

58

Instalaci贸n de la aplicaci贸n

59

Configuraci贸n del dominio en Mailgun y del Bucket en Amazon S3

60

Configuraci贸n final de Docker Container usando Supervisor

61

Tutorial de despliegue de la aplicaci贸n

62

Futuros pasos y cierre del curso

Codebase: Settings modular

4/62
Recursos

Aportes 45

Preguntas 26

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

En esta clase se entiende lo avanzado que es el curso. 馃槃

Siento que debi贸 empezar de 0 ya que en el otro curso de django no se explica nada de la configuraci贸n avanzada que tenemos en este proyecto

Comando para que copien el c贸digo inicial:
git clone -b 1/Codebase [email protected]:pablotrinidad/cride-platzi.git

Si quieren tener el repositorio base con el que empieza el Profe pueden descargar el zip elgiendo la rama de Codebase primeramente, o si les gusta bajarlo mediante git pueden clonar el proyecto y reiniciar los cambios a como estaba en el primer commit con el comando :
git reset --hard <hash del primer commit>

Para los que buscan el proyecto cride aqui les dejo en enlace cride en github

Realmente este es un curso avanzado de verdad, son muchos temas que hay que estudiar y como dice el profe el 90% es de construcci贸n y de estudio y lectura de la estructura de nuestro proyecto y un 10% c贸digo p煤ro.
A estudiar se ha dicho, gracias.

Para los que tengan problemas en iniciar el proyecto lo que primero deben hacer es lo siguiente:

  1. Verificar que la versi贸n de ubuntu se encuentre apuntando al distro de WSL2, deben ingresar al power shell de windows y realizar los siguientes pasos
c:\>wsl --list --verbose
 NAME                   STATE           VERSION
* Ubuntu-20.04           Running         2
  docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2

c:\> wsl --set-version  Ubuntu-20.04 2

una vez ejecuten el segundo comando tomara un tiempo mientras transforma la versi贸n de ubuntu instalada a 2 (si tienes la versi贸n de ubuntu 18 pues agrega tal cual aparece en la lista

  1. Instalar Docker Desktop para windows, una vez instalado deber ir a la opci贸n settings/Resources/WSL INTEGRATION y activar la opci贸n 鈥淓nable integration with my default WSL distro鈥

  2. crea una carpeta en tu home de ubuntu (WSL) y luego clona el proyecto

  3. ingresa a la carpeta del proyecto y corres el comando

sudo docker-compose -f local.yml build

Y ya comienza la instalaci贸n del proyecto para continuar con las clases

no se que hacer

Traceback (most recent call last):
  File "bin/docker-compose", line 6, in <module>
  File "compose/cli/main.py", line 72, in main
  File "compose/cli/main.py", line 125, in perform_command
  File "compose/cli/command.py", line 76, in project_from_options
  File "compose/cli/command.py", line 142, in get_project
  File "compose/cli/docker_client.py", line 47, in get_client
  File "compose/cli/docker_client.py", line 141, in docker_client
  File "site-packages/docker/context/context.py", line 34, in __init__
  File "site-packages/docker/context/config.py", line 77, in get_context_host
  File "site-packages/docker/utils/utils.py", line 281, in parse_host
docker.errors.DockerException: Invalid bind address format: port is required: 127.0.0.1
[11908] Failed to execute script docker-compose

Objetivos del c贸digo base

  • Configuraci贸n declarativa
  • Contrato claro con el OS
  • Lista para lanzar
  • Reducir diferencia entre entornos
  • F谩cil de escalar

驴Por qu茅 Docker?

  • No necesita un 鈥淕uest OS鈥
  • Usa muy poca memoria
  • F谩cil de replicar y controlar
  • F谩cil de compartir

Docker
Docker compose

Solo el se entiende鈥ue mal explica, en youtube explican mucho mejor si deseas aprender Django.

No encuentro el repo de projecto 馃槮

Settings Actualizadas - 28 de abril 2022

  • ./config/settings/base.py
# Environment
django-environ==0.8.1

# Django REST Framework
djangorestframework==3.13.1
django-filter==21.1

# JWT
pyjwt==2.3.0

# Passwords security
argon2-cffi==21.3.0

# Static files
whitenoise==6.0.0

# Celery
redis==4.2.2
django-redis==5.2.0
celery==5.2.6
flower==1.0.0
tornado==6.1

  • ./config/settings/local.py
-r ./base.txt

# Debugging
ipdb==0.13.9

# Tools
django-extensions==3.1.5

# Testing
mypy==0.950
pytest==7.1.2
pytest-sugar==0.9.4
pytest-django==4.5.2
factory-boy==3.2.1

# Code quality
flake8==4.0.1

Vengo del futuro.
Les recomiendo enormemente que hagan este cambio para evitar problemas en el trancurso del curso.

django>=2.0.10

a

django==2.0.10

django>=2.0.10 instalar谩 la versi贸n que haya de Django cuando veas esto
django==2.0.10 por otro lado instalar谩 espec铆ficamente la versi贸n 2.0.10

Esto se encuentra en cride/requiremens/base.txt

Luego de hacerlo tendr谩n que volver a correr el comando de build, y finalmente el comando de up.

hola equipo les dejo una lectura de django-environ y su creacion en un docker
(https://medium.com/swlh/setting-up-a-secure-django-project-repository-with-docker-and-django-environ-4af72ce037f0)

Al ejecutar:

docker-compose -f local.yml build

En ubuntu me da errores de docker, espec铆ficamente:

docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))
[11454] Failed to execute script docker compose

Alguien queue le haya pasado lo mismo? 馃槮

Deber铆an dejar los link en las descripciones de los cursos鈥

saludos

Tomando en cuenta lo realizado en el curso anterior de django, en este no 煤tilizamos entornos virtuales, se puede saber por que motivo es??

Que bueno ver estos settings tan completos

estoy siguiendo la ruta de desarrollo backend con python y este curso parece demasiado para mi, pero bueno intentare tomarlo todo y veo que tal

Este Curso me gusto m谩s que el anterior鈥 que incre铆ble el manejo de la seguridad

build

鈥溾ealmente no importa que base de datos estes usando mientras sea relacional鈥︹ SQLite que? ok no 馃槃

Recomiendo el Libro Two Scoops of Django donde detallan las mejores practicas en el desarrollo incluyendo la explicaci贸n de un settings modular

Para comprar la versi贸n 3
https://www.feldroy.com/

Si quiere la versi贸n 1.11 d茅jenme su email y se los comparto.

Muy bien, lo de cambiar el algoimo de hasheo de passwords por Argon2. Si alquien se pegrunta por qu茅 se cambiaron los passwrods hashers: Argon2 es el algoritmo de hasheo de passwords m谩s robusto y aceptado por los criptogr谩fos en la actualidad (2021). Lo que viene por default en Django (PBKDF2) sirve para aplicaciones sencillas pero es f谩cil de atacar con hardware espec铆fico igual que bcrypt. Si tienen una aplicaci贸n en la que la segurdiad sea cr铆tica, lo mejor es una funci贸n como Arg贸n2 o scrypt.

Veo que hay muchos comentarios # NOQA, 驴a qu茅 se refiere eso?

$ docker-compose -f local.yml build

una pregunta鈥 como se podria configurar vagrant para que tenga las mismas especificaciones que tiene este contenedor de docker?

Pablo, agradezco por el gran curso que est谩s dando y pregunto 驴Por qu茅 usas psycopg2 en lugar de psycopg2-binary? 驴Cual es la diferencia o la motivaci贸n?
Consulto porque hay quienes recomiendan usar psycopg2-binary. Quiz谩s no entiendo bien la diferencia sobre cu谩ndo usar cada uno.
Saludos!!! (y)

Que buena explicaci贸n !

馃槂 estoy emocionado por aprender docker

Super potente este curso, he trabajado con todas esas tecnolog铆as as铆 que a reafirmar conocimientos

Buen dia profe me salio este error, estoy usando docker en windows

$ docker-compose -f local.yml build
Building postgres
ERROR: SSL error: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:661)```

alguien tiene idea de que seria necesario instalar en una vm de vagrant para realizar este curso?

Si quiero usar cualquier VPS en lugar de amazon, c贸mo configuro el production.py en la parte de Storages 鈥 en general cambian mucho los settings si no uso AWS ??

versi贸n 2.1 ok la pagina el dia de hoy 15 de enero de 2020 ya van por la version 3 Oh!!!

Docker es excelente, pero 驴usa muy poca memoria? mmmmm.Cuando tenemos varios proyectos con Docker nos damos cuenta que no es as铆.

Por que utilizan MD5? no se supone que esta roto?..

Vuelvo a plantear una duda con respecto a el c贸digo ya pre-instalado o ya creado, como ser las carpetas iniciales. Esto lo creo el profesor y si lo creo el profesor estas configuraciones sirven para cualquier proyecto que uno quiera realizar, o lo debemos de modificar seg煤n nuestras necesidades??

Al ejecutar desde la terminal en macos: docker-compose f- local.yml build Obtengo :ERROR: Version in 鈥./local.yml鈥 is unsupported. You might be seeing this error because you鈥檙e using the wrong Compose file version. Either specify a version of 鈥2鈥 (or 鈥2.0鈥) and place your service definitions under the services key, or omit the version key and place your service definitions at the root of the file to use version 1.

Alguna ayuda?

Llevo varios a帽os programando en Django y hay un par de temas sobre la configuraci贸n que desconoc铆a, el primer curso de Django Avanzado que pinta como tal, espero no me decepcione 馃槃

ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

Si ubuntu les tira que estan usando WSL 1 y necesitan el WSL 2 aqui les traigo la solucion.

  • Abrir PowerShell como Administrador
  • Ejecutar este comando
wsl -l -v
  • Vemos que el ubuntu esta con wsl 1 asique lo cambiamos
  • Ejecutar
wsl --set-version Ubuntu-18.04 2
  • En mi caso era esa version, ustedes pongan la suya, esperan unos minutos y listo

de donde saco esa estructura de carpetas y todo? cuando uno va a iniciar un proyecto en django va a la linia de comando y inicia un nuevo proyecto y ahi se forman las estructuras de las carpetas pero aqui como hago? osea si quiero hacer mi proyecto por mi cuenta voy y bajo el respositorio de el profe wtf? no entiendo 馃槙

Hola como est谩n? Est谩 muy bueno que implementen estos settings y docker (adem谩s) ya que nos permite cubrir el aspecto de config de 12 factor app. Est谩 dentro de las mejores p艜acticas todo lo estipulado aqu铆, ya que nos permite compartir est谩 configuraci贸n con los dem谩s con la m铆nima (o nula) implementaci贸n de l贸gica de programaci贸n posible (es una configuraci贸n, no es necesario esto), implementando variables de entorno para su uso en el entorno que se considere necesario, implementa third-apps donde es necesario con librer铆as recomendadas y as铆. Lo felicito enorme por esto y deber铆a ser la base para nuestras configuraciones en un futuro.