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

Organizando modelos en un paquete de Django

11/62
Recursos
Deconstruir el modelo de Usuario en múltiples archivos dentro de un paquete

Aportes 25

Preguntas 8

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

La expresión regular para validar teléfonos:

r'\+?1?\d{9,15}$

Borrar la el volumen de la base de datos. $ docker-compose ps $ docker-compose down $ docker volume ls $ docker volume rm cride_local_postgres_data

Tuve el siguiente problema corriendo el comando tal cual lo muestra el profesor:

gonza@gonza:~/Development/django_avanzado/cride$ docker-compose run --rm django python manage.py makemigrations
ERROR: 
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml

No sé qué era, pero por si a alguien también le pasa, lo solucioné corriendo el comando de la siguiente manera:

gonza@gonza:~/Development/django_avanzado/cride$ docker-compose -f local.yml run --rm django python manage.py makemigrations

Sustitución del modelo User personalizado
Creamos la clase User heredando de AbstractUser y agregamos todos los campos que nuestra aplicación necesite.
Luego, en el archivo de configuración (base.py), agregamos: AUTH_USER_MODEL = 'users.User'

Organizar modelos en múltiples archivos
Creamos el directorio models, creamos el archivo __init__.py, creamos los archivos correspondientes a los modelos (users.py, profiles.py, etc) y dentro del archivo __init__.py importamos los modelos: from .users import User

Tuve un problema al darle createsuperuser

ValueError: Couldn't load 'Argon2PasswordHasher' algorithm library: No module named 'argon2._ffi'

Solución:
1: requirements/base.py
actualizar la version de argon2

argon2-cffi==20.1.0

2: docker-compose down

3: docker-compose build

4: docker-compose up

¿Por qué importa los modelos en el archivo init.py?

Alguien sabe por que me aparece el siguiente error:

 (auth.E002) The field named as the 'USERNAME_FIELD' for a custom user model must not be included in 'REQUIRED_FIELDS'.

Tengo un error que no logro solucionar 😦 alguien sabe qué puede estar pasando?

El error es este:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/django/apps/config.py", line 165, in get_model
    return self.models[model_name.lower()]
KeyError: 'user'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/django/contrib/auth/__init__.py", line 194, in get_user_model
    return django_apps.get_model(settings.AUTH_USER_MODEL, require_ready=False)
  File "/usr/local/lib/python3.6/site-packages/django/apps/registry.py", line 202, in get_model
    return app_config.get_model(model_name, require_ready=require_ready)
  File "/usr/local/lib/python3.6/site-packages/django/apps/config.py", line 168, in get_model
    "App '%s' doesn't have a '%s' model." % (self.label, model_name))
LookupError: App 'users' doesn't have a 'User' model.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 33, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 347, in execute
    django.setup()
  File "/usr/local/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python3.6/site-packages/django/apps/registry.py", line 120, in populate
    app_config.ready()
  File "/usr/local/lib/python3.6/site-packages/django/contrib/auth/apps.py", line 21, in ready
    if hasattr(get_user_model(), 'last_login'):
  File "/usr/local/lib/python3.6/site-packages/django/contrib/auth/__init__.py", line 199, in get_user_model
    "AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'users.User' that has not been installed

Hola, mira que me esta saliendo este error ¿ sabes por que ?

File “/usr/local/lib/python3.6/site-packages/django/contrib/auth/management/commands/createsuperuser.py”, line 117, in handle
self.UserModel._default_manager.db_manager(database).get_by_natural_key(username)
AttributeError: ‘Manager’ object has no attribute ‘get_by_natural_key’

Alguien sabe alguna documentacion de esos validadores:
regex = r’+?1?\d{9,15}$’

Tengo un error:

django.db.utils.ProgrammingError: relation "users_user" does not exist

Aquí les dejo un pequeño script para poder utilizar manage .py sin tener que estar repitiendo el comando largo todo el rato.

Para utilizarlo simplemente .\nombreScript .py parametro1 parametro2 parametro…
**
Como yo lo uso:
.\bmanage .py createsuperuser **

import sys
import os

command = "docker-compose -f .\local.yml run --rm django python manage.py"
params = ""

# Count the arguments
arguments = len(sys.argv) - 1

# Output argument-wise
position = 1
while (arguments >= position):
    
    params = params + " " + sys.argv[position]
    position = position + 1 

# Command build
command = command + params
print("(control + c) to exit\n")
os.system(command)

Yo preferiría usar r'^\+?1?\d{9,15}$' como la expresión regular (agregué un ^ al inicio) de este modo asdf+122234567890 no pasaría el validador

No puedo borar el volumen con el comando

docker volume rm cride-platzi-1-codebase_local_postgres_data

Me sale

Error response from daemon: remove cride-platzi-1-codebase_local_postgres_data: is in use - [b98c789896a89689689c68686c8cd968dc98]

Bajé los containers entre la clase anterior y esta. Ahora no se levantan, no estoy seguro que hacer, primero me salió que el atributo error_message del campo email daba error, y lo comente.

Despues salio esto [Reverse accessor for ‘User.groups’ clashes with reverse accessor for ‘User.groups’].
Le puse en settings base AUTH_USER_MODEL = “users.User” para que sea el modelo default

Despues salio que no tenia migraciones, le hice las migraciones con:
sudo docker-compose -f local.yml run --rm django python manage.py makemigrations

Despues sale el error django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency users.0001_initial on database 'default’
y no se que hacer con esto, algún consejo?

Adicionar en los settings un modelo de usuario custom

correr el container de Django independiente

Correr el comando makemigrations $ docker-compose run --rm django manage.py makemigrations

Error django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency users.0001_initial on database 'default'. Se aplico ya la app de usuarios por defecto antes del usar la custom

Todo perfecto hasta el momento.

SOL: Para aquellos que les sale el siguiente error:

users.User

simplemente es:

  1. Cambiar el nombre del modelo users por user
  2. cambien en todo luegar lo que diga User por Users

Estos cambios los encuentras en la carpeta modelo: (Users, Profiles) tanto como en la ruta

Este es el curso de Expresiones Regulares de Platzi, es muy bueno. https://platzi.com/clases/expresiones-regulares/

Trato de eliminar el servicio y me sale eso, quien me puede ayudar?

docker volume rm cride_local_postgres_data
Error response from daemon: remove cride_local_postgres_data: volume is in use - [9045283faaf5c057fd87dc0ea46e124d53cdf5a8c3bc32b7f36c317025f47add]

Como puedo solucionar este error? :
ERRORS: users.User: (auth.E002) The field named as the 'USERNAME_FIELD' for a custom user model must not be included in 'REQUIRED_FIELDS'.

Tengo varios inconvenientes:

psycopg2.errors.UndefinedTable: relation "users_user" does not exist

y el otro al correr el comando:

cride docker-compose run --rm django --service-ports django
Creating cride_django_run ... done
PostgreSQL is available
/entrypoint: exec: line 43: illegal option --

No encuentro solucion