Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

429
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!