Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

431
Vistas
¿Cuál es la implicación de usar request.user sobre self.request.user?

Quiero saber la principal diferencia entre self.request.user (cuando se usa la vista genérica View ) y request.user (cuando se usa una vista definida por el usuario), a veces cuando uso la vista genérica de django ( django.views.generic import View ) que tiene acceso al modelo de usuario de django, interactuaría con el usuario autenticado como request.user y self.request.user sin tener ningún problema.

Por ejemplo, en django views.py :

 from django.contrib.auth import get_user_model User = get_user_model() class GetUserView(View): def get (self, request, *args, **kwargs): user_qs = User.objects.filter(username=request.user.username) #Do some other stuffs here class AnotherGetUserView(View): def get(self, request, *args, **kwargs): user_qs = User.objects.filter(username=self.request.user.username) #Do some other stuffs here

Me doy cuenta de que los dos conjuntos de consultas funcionan bien, pero aún no puedo descubrir cuál es el mejor para usar.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No hay diferencia. Antes de activar el método get , ejecutará el .setup(…) [Django-doc] que establecerá self.request = request así como self.args y self.kwargs en los parámetros de URL posicionales y con nombre respectivamente. A menos que anule esto, self.request siempre se referirá al mismo objeto que request , y la documentación dice explícitamente que no debe anular el .setup(…) sin hacer una llamada al método super que, por lo tanto, se configurará a self.request

Sin embargo, no tiene mucho sentido hacer User.objects.filter(username=request.user.username) : ya tiene el objeto de usuario: que es request.user , por lo que aquí solo realizará solicitudes de base de datos adicionales. user_qs es simplemente un conjunto de consultas con un elemento: request.user . Por lo tanto, puede, por ejemplo, utilizar request.user.email para obtener la dirección de correo electrónico del usuario que ha iniciado sesión.

Es posible que desee utilizar LoginRequiredMixin [Django-doc] para asegurarse de que la vista solo se pueda llamar si el usuario ha iniciado sesión, por lo que:

 from django.contrib.auth.mixins import LoginRequiredMixin class GetUserView( LoginRequiredMixin , View): def get (self, request, *args, **kwargs): # …
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda