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

A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Creando el token de autorizaci贸n

23/62
Recursos

Aportes 26

Preguntas 4

Ordenar por:

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

El video dice que dura 26:14 pero despues del 13:45 ya no hay nada.

Recomentaci贸n
La implementaci贸n original proprocionada por django nos otorga tanto las funciones authenticate y login. Authenticate ya esta siendo utilizada en nuestra versi贸n para la verificaci贸n del usuario sin embargo las tareas que hacia login no estan siendo implementadas del todo. El siguiente c贸digo agrega la funcionalidad para asignar la 煤ltima fecha de login de un usuario al momento de crear(OJO. Solo al momento de crear, cuando se retorna un token ya existente no se genera un cambio en este cmapo) un nuevo token para el usuario.

class UserLoginSerializer(serializers.Serializer):
    ''' Serializer for login of users '''
    password = serializers.CharField()    
    email = serializers.EmailField()

    def validate(self, data):
        ''' Validate the information of the login user '''
        user = authenticate(email=data['email'], password=data['password'])

        if not user:
            raise serializers.ValidationError('Invalid Credentials')
        self.context['user'] = user

        return data

    def create(self, data):
        ''' Create token for identificate the user and update the last login date'''
        token, created_token = Token.objects.get_or_create(user=self.context['user'])
        
        user = self.context['user']
        if created_token:
            user.last_login = timezone.now()
            user.save(update_fields=['last_login'])
        return user, token.key

Yo tenia problemas tratando de ejecutar las migraciones de authtoken pero al final parece que era un poblema con la compatibilidad entre las diferentes librerias-frameworks usados.

Lo solucion茅 trayendo la version mas actual de django-rest-framework.

PD: Puede que ya sea hora de actualizar este curso, la calidad es muy buena, pero ya hay muchos problemas de compatibilidad

Caray, eso de estar imporvisando durante la clase y generando una soluci贸n espec铆fica para su proyecto confunde un mont贸n鈥 mejor a leer la documentaci贸n y reforzar con los tutoriales de LinkedIn Learning

Una sugerencia.

Me dio la impresi贸n que esta clase espec铆ficamente no estuvo preparada. Es evidente que el profesor es un crack y hasta m谩s. Sin embargo puede que sea mala edici贸n. Sin embargo al divagar tanto e internarse en su forma de trabajo crea confusi贸n.

Es solo mi opini贸n basado en mis impresiones.

Por favor arreglen el video.

Al hacer http localhost:8000/users/login/ email=鈥渁kfajfajfasj鈥 password=4564564admin
me sale los siguiente
<style type=鈥渢ext/css鈥>
html * { padding:0; margin:0; }
body * { padding:10px 20px; }
body * * { padding:0; }
body { font:small sans-serif; background:#eee; color:#000; }
body>div { border-bottom:1px solid #ddd; }
h1 { font-weight:normal; margin-bottom:.4em; }
h1 span { font-size:60%; color:#666; font-weight:normal; }
#info { background:#f6f6f6; }
#info ul { margin: 0.5em 4em; }
#info p, #summary p { padding-top:10px; }
#summary { background: #ffc; }
#explanation { background:#eee; border-bottom: 0px none; }
</style>
</head>
<body>
<div id=鈥渟ummary鈥>
<h1>Forbidden <span>(403)</span></h1>
<p>CSRF verification failed. Request aborted.</p>

<p>You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is required for security reasons, to ensure that your browser is not being hijacked by third parties.</p>
<p>If you have configured your browser to disable cookies, please re-enable them, at least for this site, or for 芒聙聹same-origin芒聙聺 requests.</p>

驴como lo soluciono?

Asegurense de poner la coma al final

# Django REST Frameowrk
REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES':(
        'rest_framework.renderers.JSONRenderer',
    )
}

para no tener un molesto

TypeError: object of type 'type' has no len()

tengo un problema al colocar en base 鈥渞est_framework.authtoken鈥 鈥 no me deja continuar 馃槮

Token.objects.get_or_create(user=self.context['user'])

脕nimo que se puede terminar este curso!!!

Todos los serializers comparten un contexto (7:02)

La verdad no se porque pero a la hora de hacer:

serializer.is_valid(raise_exception=True)

no ejecutaba la function validation dentro de la clase UserLoginSerializer lo solucione mandando llamar directamente esa funci贸n despues del is_valid() asi :

serializer = UserLoginSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.validation(data=request.data)

si alguien sabe porque paso eso ya que asi no esta en el video porfavor diganme

Hola!
Una pregunta, he visto varios ejemplos donde la autentificacion se maneja fuera de las url versionadas.
驴La autentificacion no se debe versionar?

Hey esta clase me lanza un error si pongo

token, user = serializer.save()

psero si lo hago al revez no

user, token = serializer.save()

Por qu茅 pasa esto?

donde podemos ver la implementacion de un token seguro para mejorar el proyecto que estamos desarrollando en este curso se puede usara JWT para todo el proyecto y no solo para verificar los usuarios por email , como seria su uso en todo el proyecto conocen una gu铆a o algo? gracias

Cuando hago:

http localhost:8000/users/login/ email="[email protected]" password=cfhhbj422
Incluso con emails que si existen me sigue saliendo:

HTTP/1.1 400 Bad Request
Allow: POST, OPTIONS
Content-Length: 44
Content-Type: application/json
Date: Fri, 17 Apr 2020 14:53:56 GMT
Server: WSGIServer/0.2 CPython/3.6.10
Vary: Accept, Cookie
X-Frame-Options: DENY
x-xss-protection: 1; mode=block

{
    "non_field_errors": [
        "Invalid credentials"
    ]
}

Alguna idea?Gracias

me sale un error cuando envio el post con el correo y el password
鈥橴serLoginSerializer鈥 object is not callable
a alguien mas le salio esto?

Este video esta mal grabado, hay partes que no coincide el audio con la imagen

No es redundante comentar """Meta class.""" en la clase Meta? es como que no agrega ninguna informaci贸n adicional. Lo mismo con UserModelSerializer comentando 鈥淯ser model serializer鈥. Simplemente es repetir lo que ya escribiste.

Alguien ha tenido problemas con los serializers? llevo casi tres d铆as resolviendo bugs

user, token = serializer.save()
No se supone que el metodo save() retorna una instancia del modelo? pero esta token y user鈥 no entiendo :S

驴Hay alguna impelmentaci贸n de Token seguro como ejemplo, que con pocos conocimientos sea f谩cil de implementar?
No entiendo muy bien, es un curso avanzado, pero el ejemplo de token no es seguro.

Que metodos de autenticacion pueden ser realmente seguros?

馃憤馃従馃憤馃従馃憤馃従馃憤馃従

C贸digo Serializer para modelo User