A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Implementaci贸n del modelo de usuarios de Platzigram

15/37
Recursos

Las opciones que Django propone para implementar Usuarios personalizados son:

  • Usando el Modelo proxy
  • Extendiendo la clase abstracta de Usuario existente
    La opci贸n OneToOneField restringe la posibilidad de tener perfiles duplicados.

Django no guarda archivos de imagen en la base de datos sino la referencia de su ubicaci贸n.

Aportes 54

Preguntas 21

Ordenar por:

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

Comparto aqu铆 un resumen de la clase espero les sea 煤til:

Las opciones que Django propone para implementar Usuarios personalizados son:
- Usando el Modelo proxy
- Extendiendo la clase abstracta de Usuario existente

Para el presente proyecto debemos crear los campos de usuario:

  1. website
  2. biography
  3. phone_number
  4. profile picture
  5. created
  6. modified

Luego debemos crear la app que se llamar谩 users

sudo python3 manage.py startapp

Crear el modelo
Se debe importar lo que necesitamos

from django.contrib.auth.models import User

Luego se crea los campos adicionales que se necesitan seg煤n el proyecto

class Profle (models.Model):
    """Profile Model."""
    """Proxy model that extends the base data with other information"""
    user =models.OneToOneField(User,on_delete=models.CASCADE)
    website=models.URLField(max_length=200,blank=True)
    biography=models.TextField(blank=True)
    phone_number=models.CharField(max_length=20,blank=True)
    picture=models.ImageField(
        upload_to='users/pictures',
        blank=True,
        null=True
    )
    create=models.DateTimeField(auto_now_add=True)
    modified=models.DateTimeField(auto_now=True)


    def __str__(self):
        """Return username."""
        return self.user.username

Posterior a eso dirigirse al archivo de settings.py y as铆 como se instal贸 post se va a instalar users

Para que funcione el campo ImageField se debe instalar la librer铆a Pillow y se lo hace de la siguiente manera

sudo pip install Pillow

Despu茅s ejecutar para que se hagan efecto las migraciones

python3 manage.py makemigrations
python3 manage.py migrate

Y para ingresar al administrador de django crear el super usuario

python3 manage.py createsuperuser

Sabe mal tener acceso a un curso de pago y sentir la necesidad de buscar otro.
He echo laravel (no un curso, sino trabajado), y me hago una buena idea de lo que un fremework ofrece.
La cuesti贸n es la comprensi贸n y el porqu茅 de los pasos, y aqu铆 m谩s que un ser con capacidad de comprender, me siento una maquina de repetici贸n.

Hasta el momento la mayoria de cursos me dejan un sin sabor, he encontrado mejores cursos gratis en youtube. Al fin y al cabo en este curso el profesor se dedica a enviar a todo mundo a la documentacion鈥 En fin, pocos profesores como Freddy y el de Bases de datos, ellos si quieren que la gente aprenda. Existe una gran diferencia entre saber hacer y saber ense;ar.

Me encanta esta frase y me gustar铆a traerla a colaci贸n: 鈥淪i no lo puedes explicar de forma sencilla, es que no lo has entendido bien鈥 (Einstein). Me parece que el curso se torna un poco lioso a media de que avanza. Es mejor hacer un curso simple y sencillo que de buenas bases al estudiante. Por mas bueno que sea un curso un estudiante siempre ira a la referencia. No es necesario estar siempre leyendo y mostrando la documentaci贸n, si as铆 lo quisiera un estudiante comprar铆a un libro y no pagar铆a por un curso.

Leyendo la documentaci贸n que se muestra en la parte inicial Extendiendo el model User entiendo que hay dos formas de extender el modelo de Users de Django sin modificarlo:

  1. Usar un Model Proxy, que se usa solo cuando se va a modificar el comportamiento del modelo Users de django

2.Usar un modelo de realaci贸n Uno a Uno con Users, que normalmente se llama profile y que se usa cuando se requiere almacenar informaci贸n adicional que no esta en el modelo users de Django

En ,el video se usa la opcion 2. mencionada pero se dice que eso un modelo proxy pero en realidad no lo es.

Hay otras dos formas de personalizar el modelo de Users, uno es definir un modelo propio y otro es personalizarlo en donde se usan las clases abstractas y la herencia, pero este si implica el cambio del modelo original. No se si este bien pero es lo que entiendo del vinculo de la documentaci贸n.

Me encanta los cursos de Platzi, pero ya es hora de que actualicen la ruta de desarrollo backend con Python, las mayoria de los cursos tiene mas de tres a帽os, asi como el lenguaje y los framework ha avanzado mucho y uno queda con un mal sabor por que no esta aprendiendo lo necesario.

muy mal curso, el profesor da mil vueltas para explicar conceptos bien sencillos. Borra elementos, quita, pone, va, viene, se le olvidan las cosas, eso termina confundiendolo a uno y volviendo el proceso m谩s tedioso para uno como estudiante.

Este curso esta mandado a actualizar (cambiar tutor) hace rato. Volvi porque quiero terminar la carrera pero es necesario hacer cursos por fuera, para alguuien que esta empezando seguro no es la mejor alternativa. Muy ambiguo, conceptos a mil por hora demasiado generales. Alguno supo en que minuto explican que es un modelo proxy? me lo salte?

Que l铆o de screen slide鈥 gracias por el esfuerzo de hacer el curso, pero鈥 es un poco ca贸tico para lo sencillo que realmente puede llega a ser describir linea a linea lo que hace cada cosa, me recuerda a cuando hago algo sin haberlo preparado鈥

La definici贸n del max_length de 200 en URLField es innecesario, ya que si no se especifica, su valor por defecto es de 200.

Django - URLField

If you don鈥檛 specify max_length, a default of 200 is used.

Hola, estoy usando docker-compose para montar el proyecto. He instaladao Pillow correctamente sobre el docker que contiene Django pero al hacer el runserver me sigue dando error de que Pillow no est谩 instalado. Alguna ayuda?

Para poder entrar en el admin:

from django.urls import path
from django.contrib import admin
urlpatterns = [
    path('admin/', admin.site.urls),
]

documentaci贸n 3.0 seg煤n django cambia bastante

驴Cual ser铆a la fundamental diferencia entre crearlo con el abstractuser o con el proxymodel?

Ha sido dif铆cil,pero vamos!

Hoa a todos, dejo esta informacion sobre los distintos valores que puede llevar on_delete, aqui encontraran un explicacion clara sobre como funciona CASCADE, SET_NULL, etc. estas en realidad son FOREIGN KEY CONSTRAINTS o en espa帽ol RESTRICCIONES DE LLAVE FORANEA
(https://es.stackoverflow.com/questions/105890/que-significa-cascade-set-null-restrict-no-action-en-phpmyadmin)

Me corregiran de pronto pero notaron que en realidad el tutor no utiliza un model proxy seg煤n la documentaci贸n oficial para que sea un modelo proxy debe indicarse de la siguiente forma:
class MyPerson(Person):
class Meta:
proxy = True

Para conocimiento general y teniendo en cuenta el uso de recursos en nube, comparto a continuaci贸n la configuraci贸n de media conectado a S3 (Bucket) en AWS.

https://simpleisbetterthancomplex.com/tutorial/2017/08/01/how-to-setup-amazon-s3-in-a-django-project.html

Algo que me costo entender fue c贸mo se a帽ad铆an mas campos al trabajar con el registro de usuarios que ya nos proporciona Django.

Logr茅 entender, un par de videos mas adelante, y lo que se hace en este paso del curso es crear una nueva clase (en base de datos ser铆a una nueva tabla) que se relacione con una clave for谩nea al modelo de usuarios que proporciona Django, con una relaci贸n 1:1

Otra cosa muy importante este m茅todo que estamos usando ac谩 no es un modelo Proxy! es un modelo de relacion 1:1. Para ser un modelo proxy deberia lucir mas o menos asi:

class Perfil(User):
    class Meta:
        proxy = True

    def say_hello(self):
        return "Hola, mi nombre es: {}".format(self.first_name)

Los creadores de Django, te dan la recomendacion que si estas comenzando tu proyecto, puedes directamente crear un modelo de usuario que funcione exactamente igual que el que tienes por defecto, solo que con la ventaja de poder cambiarlo y agregarle lo que quieras dejo link a la documentacion.

He estado tratando de encontrar la raz贸n de por que me marca error, alguien tiene idea de por que sucede? Uso VS Code, no se si eso tenga que ver.

Realmente el archivo funciona bien, inicialmente cre铆a que era por el username ya que nosotros lo estamos declarando 煤nicamente user pero de quitarlo, aunque sale bien en el IDE, la terminal marca error.

S铆 alguien sabe m谩s a detalle sobre este detalle le agradecere su respuesta.

broserSqlite para distribuciones basadas en debian:
La instalaci贸n es la sigutiente:

sudo apt install sqlitebrowser -y

models.py in progress migration

apps.py finished

Si quieren ver su base de datos SQL lite sin tener que usar DB Browser, les recomiendo esta extensi贸n de vs code

crea el super user

si alguien est谩 trabajando con docker es importante installar las siguientes dependencias para poder utilizar pillow:

  • gcc
  • python3-dev
  • jpeg-dev
  • zlib-dev

Las opciones que Django propone para implementar Usuarios personalizados son:

鈥 Usando el Modelo proxy: El modelo proxy es usado cuando en ambas clases tenemos los mismos atributos pero en la nueva clase queremos agregar mas metodos o cambiar el funcionamiento de alguno de los ya existentes.

.

鈥 Extendiendo la clase abstracta de Usuario existente: Al extender de la clase abstracta podemos agregar nuevos atributos a la clase que extiende.

.
.

Recuerda que si borras la base de datos, te puede cargar tu proceso en el desarroll.

Para el ImageField, requerimos de la liber铆a Pillow

Algo muy importante con el OneToOneField, es que tiene el par谩metro, on_delete, ya que en 茅l especificamos, lo que queremos en el campo de nuestra extenci贸n.

Para hacer nuestros usuarios, tenemos: modelo proxy, o heredar la clase AbstractUser.

Este curso est谩 MUY bueno, pero me da miedo no recordar lo que aprend铆 :c

Les dej贸 el c贸digo de la clase para crear el profile

from django.db import models
from django.contrib.auth.models import User

# Create your models here.

class Profile(models.Model):
    """
    Proxy model that extends the base data with other information
    """
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    website = models.URLField(max_length=200, blank=True)
    biography = models.TextField(blank=True)
    phone_number = models.CharField(max_length=20, blank=True)

    picture = models.ImageField(upload_to='users/pictures', blank=True, null=True)

    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.user.username

para instalar pillow

pip install pillow

Buenas tardes,
tengo un problema con el c贸digo generado en models.py dentro de la app users.
La funci贸n del final no me esta funcionando bien el return self. Aiuda!

En realidad no ser铆a la app profile no user ? creo que seria dentro de app profile ya que creas la clase profile la pp tambi茅n deber铆a serlo no?

Interesante el manejo que se da a los campos de tipo Image en Django, en la base de datos es un character variying de 100 caracteres, solo guarda su referencia

ayuda por favor, me complique y estoy en esta etapa , al parecer me faltan instalar algunos dependencias o es que instale muchas cosas que lo cruze, hasta antes del video todo me iva a bien pero borre la basde datos y hice todo lo que dice el profesor y me quede en esta etapa, ayuda por favor.

(Locos) C:\platzigram>python migrate.py runserver
C:\Users\yonat\AppData\Local\Programs\Python\Python37\python.exe: can鈥檛 open file 鈥migrate.py鈥: [Errno 2] No such file o
r directory

(Locos) C:\platzigram>python manage.py runserver
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x0000027EF0EB8BF8>
Traceback (most recent call last):
File 鈥淐:\Locos\lib\site-packages\django\utils\autoreload.py鈥, line 225, in wrapper
fn(*args, **kwargs)
File 鈥淐:\Locos\lib\site-packages\django\core\management\commands\runserver.py鈥, line 109, in inner_run
autoreload.raise_last_exception()
File 鈥淐:\Locos\lib\site-packages\django\utils\autoreload.py鈥, line 248, in raise_last_exception
raise exception[1]
File "C:\Locos\lib\site-packages\django\core\management_init
.py", line 337, in execute
autoreload.check_errors(django.setup)()
File 鈥淐:\Locos\lib\site-packages\django\utils\autoreload.py鈥, line 225, in wrapper
fn(*args, **kwargs)
File 鈥淐:\Locos\lib\site-packages\django_init_.py鈥, line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File 鈥淐:\Locos\lib\site-packages\django\apps\registry.py鈥, line 112, in populate
app_config.import_models()
File 鈥淐:\Locos\lib\site-packages\django\apps\config.py鈥, line 198, in import_models
self.models_module = import_module(models_module_name)
File 鈥淐:\Users\yonat\AppData\Local\Programs\Python\Python37\lib\importlib_init_.py鈥, line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File 鈥<frozen importlib._bootstrap>鈥, line 1006, in _gcd_import
File 鈥<frozen importlib._bootstrap>鈥, line 983, in _find_and_load
File 鈥<frozen importlib._bootstrap>鈥, line 967, in _find_and_load_unlocked
File 鈥<frozen importlib._bootstrap>鈥, line 677, in _load_unlocked
File 鈥<frozen importlib._bootstrap_external>鈥, line 724, in exec_module
File 鈥<frozen importlib._bootstrap_external>鈥, line 860, in get_code
File 鈥<frozen importlib._bootstrap_external>鈥, line 791, in source_to_code
File 鈥<frozen importlib._bootstrap>鈥, line 219, in _call_with_frames_removed
File 鈥淐:\platzigram\users\models.py鈥, line 16
website = models.URLField(max_length=200, blank=True)
^
IndentationError: unindent does not match any outer indentation level

Poco a poco, vamos aprendiendo

Tengo un problema, cuando le doy save para guardar el perfil, me da este error no such column: users_profile.user_id

todo bien hasta el momento

Y si solo necesito el campo de username y password 驴c贸mo puedo quitar los dem谩s que Django tiene?

Tengo una duda como puedo hacer que el administrador de django cree modelsfields din谩micos si necesidad de modificar el modelo si no que tenga un bot贸n de agregar y este campo ya aparezca en el admin.

Documentaci贸n de Pillow: Installation

Tal como se menciona el la clase hay dos formas de crear usuarios personalizados
-Usando el modelo proxy. Es recomendado para cuando solo se quiere cambiar el comportamiento de la clase sin agregar nuevos atributos. Por ejemplo para poder hacer diferentes querys.
-Extendiendo la clase abstracta de Usuario existente. Esta opci贸n es recomendada cuando se necesita agregar o quitar atributos del modelo de Usuario que viene por defecto en Django.

Pregunta: Las apps podr铆amos verlas como un routers, quiero decir, un endpoint que tenga que ver con usuarios, con productos, con categor铆as, calificar铆an como apps cada una? gracias

Hola soy usuario nuevo de ubuntus, alguien que puede decir que programa es bueno para ver la base de datos

PILLOW: Pillow es una biblioteca adicional gratuita y de c贸digo abierto para el lenguaje de programaci贸n Python que agrega soporte para abrir, manipular y guardar muchos formatos de archivo de imagen diferentes. Est谩 disponible para Windows, Mac OS X y Linux.


Mas informacion: Pillow

Pero ha registrado la APP en alg煤n momento?? Por que me he tirado media hora que no me funcionaba hasta que he ca铆do.

estuvo un poco enredado peor bueno hay vamos

Asi quedo el models de users

"""Users Models"""

# Django
from django.contrib.auth.models import User
from django.db import models

# Create your models here.
class Profile(models.Model):
    """Profile model.
    proxi model that extends the base data with other information
    """

    user = models.OneToOneField(User, on_delete=models.CASCADE)

    website = models.URLField(max_length=200, blank=True)
    biographi = models.TextField(blank=True)
    phone_number = models.CharField(max_length=20, blank=True)

    picture = models.ImageField(
        upload_to='users/pictures',
        blank=True,
        null=True
        )

    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    def __str__(self):
        """Return username. """
        return self.user.username

Este es un articulo que les recomiendo para entender las distintas forma de extender el modelo User que nos provee Django y las implicaciones de cada una de las estrategias. Espero que les sea util.

https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html

Al crear el superusuario y utilizar el retorno de carro no me permite realizar la acci贸n, es como si estuviera bloqueado. 驴Alguien me puede decir como solucionar esta cuesti贸n?

Para registrar el modelo a admin:
from .models import Profile

admin.site.register(Profile)