Skip to content

Commit ff7e396

Browse files
committed
Actualización curso backend
1 parent 50ddfc7 commit ff7e396

File tree

4 files changed

+72
-75
lines changed

4 files changed

+72
-75
lines changed

Backend/FastAPI/db/models/user.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77

88

99
class User(BaseModel):
10-
id: Optional[str]
10+
id: Optional[str] = None
1111
username: str
1212
email: str

Backend/FastAPI/routers/basic_auth_users.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ class UserDB(User):
2828
"mouredev": {
2929
"username": "mouredev",
3030
"full_name": "Brais Moure",
31-
"email": "braismoure@mourede.com",
31+
"email": "braismoure@mouredev.com",
3232
"disabled": False,
3333
"password": "123456"
3434
},
3535
"mouredev2": {
3636
"username": "mouredev2",
3737
"full_name": "Brais Moure 2",
38-
"email": "braismoure2@mourede.com",
38+
"email": "braismoure2@mouredev.com",
3939
"disabled": True,
4040
"password": "654321"
4141
}

Backend/FastAPI/routers/jwt_auth_users.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from jose import jwt, JWTError
99
from passlib.context import CryptContext
1010
from datetime import datetime, timedelta
11+
import timezone
1112

1213
ALGORITHM = "HS256"
1314
ACCESS_TOKEN_DURATION = 1
@@ -37,14 +38,14 @@ class UserDB(User):
3738
"mouredev": {
3839
"username": "mouredev",
3940
"full_name": "Brais Moure",
40-
"email": "braismoure@mourede.com",
41+
"email": "braismoure@mouredev.com",
4142
"disabled": False,
4243
"password": "$2a$12$B2Gq.Dps1WYf2t57eiIKjO4DXC3IUMUXISJF62bSRiFfqMdOI2Xa6"
4344
},
4445
"mouredev2": {
4546
"username": "mouredev2",
4647
"full_name": "Brais Moure 2",
47-
"email": "braismoure2@mourede.com",
48+
"email": "braismoure2@mouredev.com",
4849
"disabled": True,
4950
"password": "$2a$12$SduE7dE.i3/ygwd0Kol8bOFvEABaoOOlC8JsCSr6wpwB4zl5STU4S"
5051
}
@@ -103,7 +104,7 @@ async def login(form: OAuth2PasswordRequestForm = Depends()):
103104
status_code=status.HTTP_400_BAD_REQUEST, detail="La contraseña no es correcta")
104105

105106
access_token = {"sub": user.username,
106-
"exp": datetime.utcnow() + timedelta(minutes=ACCESS_TOKEN_DURATION)}
107+
"exp": datetime.now(timezone.utc) + timedelta(minutes=ACCESS_TOKEN_DURATION)}
107108

108109
return {"access_token": jwt.encode(access_token, SECRET, algorithm=ALGORITHM), "token_type": "bearer"}
109110

README.md

Lines changed: 65 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,8 @@
1111
![](./Images/header.jpg)
1212

1313
### Proyecto realizado durante emisiones en directo desde [Twitch](https://twitch.tv/mouredev)
14-
> ##### Si consideras útil el curso, apóyalo haciendo "★ Star" en el repositorio. ¡Gracias!
15-
16-
## ¡NUEVO! Curso de Python para web
17-
18-
[![Curso Python Web](https://img.shields.io/github/stars/mouredev/python-web?label=Curso%20Python%20web&style=social)](https://github.com/mouredev/python-web)
1914

20-
<a href="https://github.com/mouredev/python-web"><img src="https://raw.githubusercontent.com/mouredev/python-web/main/Images/header.jpg"/></a>
15+
> ##### Si consideras útil el curso, apóyalo haciendo "★ Star" en el repositorio. ¡Gracias!
2116
2217
## Clases en vídeo
2318

@@ -29,44 +24,44 @@ Curso que agrupa todas las clases en directo que hacen referencia a los fundamen
2924
3025
<a href="https://youtu.be/Kp4Mvapo5kc"><img src="http://i3.ytimg.com/vi/Kp4Mvapo5kc/maxresdefault.jpg" style="height: 50%; width:50%;"/></a>
3126

32-
* [Introducción](https://youtu.be/Kp4Mvapo5kc)
33-
* [Contexto](https://youtu.be/Kp4Mvapo5kc?t=244)
34-
* [Lección 1 - Configuración](https://youtu.be/Kp4Mvapo5kc?t=850)
35-
* [Lección 2 - Hola Mundo](https://youtu.be/Kp4Mvapo5kc?t=1518)
36-
* [Lección 3 - Variables](https://youtu.be/Kp4Mvapo5kc?t=2938)
37-
* [Lección 4 - Operadores](https://youtu.be/Kp4Mvapo5kc?t=5665)
38-
* [Lección 5 - Strings](https://youtu.be/Kp4Mvapo5kc?t=8643)
39-
* [Lección 6 - Listas](https://youtu.be/Kp4Mvapo5kc?t=10872)
40-
* [Lección 7 - Tuplas](https://youtu.be/Kp4Mvapo5kc?t=14711)
41-
* [Lección 8 - Sets](https://youtu.be/Kp4Mvapo5kc?t=16335)
42-
* [Lección 9 - Diccionarios](https://youtu.be/Kp4Mvapo5kc?t=18506)
43-
* [Lección 10 - Condicionales](https://youtu.be/Kp4Mvapo5kc?t=21442)
44-
* [Lección 11 - Bucles/Loops/Ciclos](https://youtu.be/Kp4Mvapo5kc?t=23822)
45-
* [Lección 12 - Funciones](https://youtu.be/Kp4Mvapo5kc?t=26619)
46-
* [Lección 13 - Clases](https://youtu.be/Kp4Mvapo5kc?t=29327)
47-
* [Lección 14 - Excepciones](https://youtu.be/Kp4Mvapo5kc?t=32030)
48-
* [Lección 15 - Módulos](https://youtu.be/Kp4Mvapo5kc?t=34583)
49-
* [Próximos pasos](https://youtu.be/Kp4Mvapo5kc?t=36390)
27+
- [Introducción](https://youtu.be/Kp4Mvapo5kc)
28+
- [Contexto](https://youtu.be/Kp4Mvapo5kc?t=244)
29+
- [Lección 1 - Configuración](https://youtu.be/Kp4Mvapo5kc?t=850)
30+
- [Lección 2 - Hola Mundo](https://youtu.be/Kp4Mvapo5kc?t=1518)
31+
- [Lección 3 - Variables](https://youtu.be/Kp4Mvapo5kc?t=2938)
32+
- [Lección 4 - Operadores](https://youtu.be/Kp4Mvapo5kc?t=5665)
33+
- [Lección 5 - Strings](https://youtu.be/Kp4Mvapo5kc?t=8643)
34+
- [Lección 6 - Listas](https://youtu.be/Kp4Mvapo5kc?t=10872)
35+
- [Lección 7 - Tuplas](https://youtu.be/Kp4Mvapo5kc?t=14711)
36+
- [Lección 8 - Sets](https://youtu.be/Kp4Mvapo5kc?t=16335)
37+
- [Lección 9 - Diccionarios](https://youtu.be/Kp4Mvapo5kc?t=18506)
38+
- [Lección 10 - Condicionales](https://youtu.be/Kp4Mvapo5kc?t=21442)
39+
- [Lección 11 - Bucles/Loops/Ciclos](https://youtu.be/Kp4Mvapo5kc?t=23822)
40+
- [Lección 12 - Funciones](https://youtu.be/Kp4Mvapo5kc?t=26619)
41+
- [Lección 13 - Clases](https://youtu.be/Kp4Mvapo5kc?t=29327)
42+
- [Lección 14 - Excepciones](https://youtu.be/Kp4Mvapo5kc?t=32030)
43+
- [Lección 15 - Módulos](https://youtu.be/Kp4Mvapo5kc?t=34583)
44+
- [Próximos pasos](https://youtu.be/Kp4Mvapo5kc?t=36390)
5045

5146
### Curso intermedio de fundamentos desde cero
5247

5348
Curso en el que continuamos aprendiendo Python desde sus bases, siguiendo la ruta de aprendizaje desde la última lección del curso de inicial.
5449

5550
> Código: Directorio "Intermediate" en el proyecto
56-
51+
5752
<a href="https://youtu.be/TbcEqkabAWU"><img src="http://i3.ytimg.com/vi/TbcEqkabAWU/maxresdefault.jpg" style="height: 50%; width:50%;"/></a>
5853

59-
* [Introducción](https://youtu.be/TbcEqkabAWU)
60-
* [Lección 1 - Dates](https://youtu.be/TbcEqkabAWU?t=202)
61-
* [Lección 2 - List Comprehension](https://youtu.be/TbcEqkabAWU?t=3239)
62-
* [Lección 3 - Resolución de retos de programación](https://youtu.be/TbcEqkabAWU?t=4142)
63-
* [Lección 4 - Lambdas](https://youtu.be/TbcEqkabAWU?t=9145)
64-
* [Lección 5 - Funciones de orden superior](https://youtu.be/TbcEqkabAWU?t=10172)
65-
* [Lección 6 - Tipos de error](https://youtu.be/TbcEqkabAWU?t=12721)
66-
* [Lección 7 - Manejo de ficheros](https://youtu.be/TbcEqkabAWU?t=15524)
67-
* [Lección 8 - Expresiones regulares](https://youtu.be/TbcEqkabAWU?t=19762)
68-
* [Lección 9 - Manejo de paquetes](https://youtu.be/TbcEqkabAWU?t=24010)
69-
* [Próximos pasos](https://youtu.be/TbcEqkabAWU?t=26228)
54+
- [Introducción](https://youtu.be/TbcEqkabAWU)
55+
- [Lección 1 - Dates](https://youtu.be/TbcEqkabAWU?t=202)
56+
- [Lección 2 - List Comprehension](https://youtu.be/TbcEqkabAWU?t=3239)
57+
- [Lección 3 - Resolución de retos de programación](https://youtu.be/TbcEqkabAWU?t=4142)
58+
- [Lección 4 - Lambdas](https://youtu.be/TbcEqkabAWU?t=9145)
59+
- [Lección 5 - Funciones de orden superior](https://youtu.be/TbcEqkabAWU?t=10172)
60+
- [Lección 6 - Tipos de error](https://youtu.be/TbcEqkabAWU?t=12721)
61+
- [Lección 7 - Manejo de ficheros](https://youtu.be/TbcEqkabAWU?t=15524)
62+
- [Lección 8 - Expresiones regulares](https://youtu.be/TbcEqkabAWU?t=19762)
63+
- [Lección 9 - Manejo de paquetes](https://youtu.be/TbcEqkabAWU?t=24010)
64+
- [Próximos pasos](https://youtu.be/TbcEqkabAWU?t=26228)
7065

7166
### Backend desde cero
7267

@@ -76,28 +71,28 @@ Curso en el que aprenderemos a utilizar Python para backend e implementaremos un
7671
7772
<a href="https://youtu.be/_y9qQZXE24A"><img src="http://i3.ytimg.com/vi/_y9qQZXE24A/maxresdefault.jpg" style="height: 50%; width:50%;"/></a>
7873

79-
* [Introducción](https://youtu.be/_y9qQZXE24A)
80-
* [Lección 01 - ¿Qué es un backend?](https://youtu.be/_y9qQZXE24A?t=125)
81-
* [Lección 02 - API y FastAPI](https://youtu.be/_y9qQZXE24A?t=834)
82-
* [Lección 03 - Type Hints](https://youtu.be/_y9qQZXE24A?t=1810)
83-
* [Lección 04 - Configuración FastAPI](https://youtu.be/_y9qQZXE24A?t=2629)
84-
* [Lección 05 - Hola mundo](https://youtu.be/_y9qQZXE24A?t=3504)
85-
* [Lección 06 - Operación GET](https://youtu.be/_y9qQZXE24A?t=5382)
86-
* [Lección 07 - Peticiones HTTP](https://youtu.be/_y9qQZXE24A?t=5925)
87-
* [Lección 08 - Creación API](https://youtu.be/_y9qQZXE24A?t=6099)
88-
* [Lección 09 - Path y Query](https://youtu.be/_y9qQZXE24A?t=7510)
89-
* [Lección 10 - Operaciones POST, PUT y DELETE](https://youtu.be/_y9qQZXE24A?t=8529)
90-
* [Lección 11 - HTTP status codes](https://youtu.be/_y9qQZXE24A?t=11072)
91-
* [Lección 12 - Routers](https://youtu.be/_y9qQZXE24A?t=12475)
92-
* [Lección 13 - Recursos estáticos](https://youtu.be/_y9qQZXE24A?t=13618)
93-
* [Lección 14 - Autorización OAuth2](https://youtu.be/_y9qQZXE24A?t=14094)
94-
* [Lección 15 - OAuth2 JWT](https://youtu.be/_y9qQZXE24A?t=17664)
95-
* [Lección 16 - MongoDB](https://youtu.be/_y9qQZXE24A?t=20480)
96-
* [Lección 17 - MongoDB Atlas](https://youtu.be/_y9qQZXE24A?t=25470)
97-
* [Lección 18 - Despliegue en Deta *](https://youtu.be/_y9qQZXE24A?t=27335)
98-
* [Próximos pasos](https://youtu.be/_y9qQZXE24A?t=28484)
99-
100-
***ACTUALIZACIÓN Sobre la lección 18:** Deta ha actualizado ligeramente su servicio de despliegue de aplicaciones con FastAPI. Tienes toda la documentación [aquí](https://deta.space/docs/en/quickstart-guides/python#fastapi). También han creado una [guía de migración](https://deta.space/migration/guides/migrate-a-micro/).
74+
- [Introducción](https://youtu.be/_y9qQZXE24A)
75+
- [Lección 01 - ¿Qué es un backend?](https://youtu.be/_y9qQZXE24A?t=125)
76+
- [Lección 02 - API y FastAPI](https://youtu.be/_y9qQZXE24A?t=834)
77+
- [Lección 03 - Type Hints](https://youtu.be/_y9qQZXE24A?t=1810)
78+
- [Lección 04 - Configuración FastAPI](https://youtu.be/_y9qQZXE24A?t=2629)
79+
- [Lección 05 - Hola mundo](https://youtu.be/_y9qQZXE24A?t=3504)
80+
- [Lección 06 - Operación GET](https://youtu.be/_y9qQZXE24A?t=5382)
81+
- [Lección 07 - Peticiones HTTP](https://youtu.be/_y9qQZXE24A?t=5925)
82+
- [Lección 08 - Creación API](https://youtu.be/_y9qQZXE24A?t=6099)
83+
- [Lección 09 - Path y Query](https://youtu.be/_y9qQZXE24A?t=7510)
84+
- [Lección 10 - Operaciones POST, PUT y DELETE](https://youtu.be/_y9qQZXE24A?t=8529)
85+
- [Lección 11 - HTTP status codes](https://youtu.be/_y9qQZXE24A?t=11072)
86+
- [Lección 12 - Routers](https://youtu.be/_y9qQZXE24A?t=12475)
87+
- [Lección 13 - Recursos estáticos](https://youtu.be/_y9qQZXE24A?t=13618)
88+
- [Lección 14 - Autorización OAuth2](https://youtu.be/_y9qQZXE24A?t=14094)
89+
- [Lección 15 - OAuth2 JWT](https://youtu.be/_y9qQZXE24A?t=17664)
90+
- [Lección 16 - MongoDB](https://youtu.be/_y9qQZXE24A?t=20480)
91+
- [Lección 17 - MongoDB Atlas](https://youtu.be/_y9qQZXE24A?t=25470)
92+
- [Lección 18 - Despliegue en Deta \*](https://youtu.be/_y9qQZXE24A?t=27335)
93+
- [Próximos pasos](https://youtu.be/_y9qQZXE24A?t=28484)
94+
95+
**\*ACTUALIZACIÓN Sobre la lección 18:** Deta, el servicio utilizado para el despliegue durante el curso, ya no existe. Te recomiendo revisar la documentación oficial de FastAPI sobre [despliegue](https://fastapi.tiangolo.com/deployment/) y utilizar alguno de los [proveedores gratuitos](https://fastapi.tiangolo.com/deployment/cloud/) recomendados, como [Render](https://render.com/).
10196

10297
### Frontend desde cero
10398

@@ -146,21 +141,21 @@ Y para finalizar... ¿Quieres saber aun más sobre él? Aquí tienes 15 curiosid
146141
Actualmente el curso está en pausa. Se han finalizados los bloques básico, intermedio y backend, y ese era el objetivo inicial del proyecto.
147142
No descarto añadir nuevas lecciones a futuro, pero creo que por el momento puede servir de base a cualquier persona que quiera empezar a aprender este lenguaje.
148143

149-
* Recuerda que he creado en el [Discord](https://discord.gg/mouredev) un canal "🐍python" para que puedas comentar lo que quieras.
150-
* En el momento que el curso continúe, actualizaré el repositorio y avisaré en redes.
144+
- Recuerda que he creado en el [Discord](https://discord.gg/mouredev) un canal "🐍python" para que puedas comentar lo que quieras.
145+
- En el momento que el curso continúe, actualizaré el repositorio y avisaré en redes.
151146

152147
¡Muchísimas gracias por todo el apoyo mostrado!
153148

154149
## Enlaces de interés
155150

156-
* [Web oficial de Python](https://www.python.org/)
157-
* [Tutorial oficial de Python en Español](https://docs.python.org/es/3/tutorial/index.html)
158-
* [Repo 30 días de Python](https://github.com/Asabeneh/30-Days-Of-Python)
159-
* [Juego Codédex para aprender Python](https://www.codedex.io/)
160-
* [Visual Studio Code](https://code.visualstudio.com/): El editor que estoy usando
161-
* [FastAPI](https://fastapi.tiangolo.com/es/): El framework para crear nuestra API Backend
162-
* [MongoDB](https://www.mongodb.com/): La base de datos que utiliza nuestro backend
163-
* [Deta](https://www.deta.sh/): Para desplegar nuestra API en la nube
151+
- [Web oficial de Python](https://www.python.org/)
152+
- [Tutorial oficial de Python en Español](https://docs.python.org/es/3/tutorial/index.html)
153+
- [Repo 30 días de Python](https://github.com/Asabeneh/30-Days-Of-Python)
154+
- [Juego Codédex para aprender Python](https://www.codedex.io/)
155+
- [Visual Studio Code](https://code.visualstudio.com/): El editor que estoy usando
156+
- [FastAPI](https://fastapi.tiangolo.com/es/): El framework para crear nuestra API Backend
157+
- [MongoDB](https://www.mongodb.com/): La base de datos que utiliza nuestro backend
158+
- [Render](https://render.com/): Para desplegar nuestra API en la nube
164159

165160
## Únete al campus de programación de la comunidad
166161

@@ -169,10 +164,11 @@ No descarto añadir nuevas lecciones a futuro, pero creo que por el momento pued
169164
#### Te presento [mouredev pro](https://mouredev.pro), mi proyecto más importante para ayudarte a estudiar programación y desarrollo de software de manera diferente.
170165

171166
> **¿Buscas un extra?** Aquí encontrarás este y otros cursos editados por lecciones individuales, para avanzar a tu ritmo y guardar el progreso. También dispondrás de ejercicios y correcciones, test para validar tus conocimientos, examen y certificado público de finalización, soporte, foro de estudiantes, reunionnes grupales, cursos exclusivos y mucho más.
172-
>
167+
>
173168
> Entra en **[mouredev.pro](https://mouredev.pro)** y utiliza el cupón **"PYTHON"** con un 10% de descuento en tu primera suscripción.
174169
175170
## ![https://mouredev.com](https://raw.githubusercontent.com/mouredev/mouredev/master/mouredev_emote.png) Hola, mi nombre es Brais Moure.
171+
176172
### Freelance full-stack iOS & Android engineer
177173

178174
[![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCxPD7bsocoAMq8Dj18kmGyQ?style=social)](https://youtube.com/mouredevapps?sub_confirmation=1)

0 commit comments

Comments
 (0)