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

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

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?

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=“akfajfajfasj” password=4564564admin
me sale los siguiente
<style type=“text/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=“summary”>
<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?

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

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 “rest_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?

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
’UserLoginSerializer’ 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 “User 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