Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

331
Visualizações
Django UserPassesTestMixin, ¿Error de bucle en get_absolute_url?

Vistas.py

 class ProfileCreate(LoginRequiredMixin, UserPassesTestMixin, UpdateView): model = User form_class = ProfileForm template_name = "profile/profile_new.html" slug_field = "username" def get_login_url(self): return reverse('account_login') def test_func(self): a = self.request.user.username # print (a) b = self.kwargs['slug'] # print (b) x = self.get_object().full_name # print (x) y = '' if a == b: if x == y: return True else: def get_absolute_url(self): return reverse('profile:view_profile', kwargs={"slug": self.request.user.username}) class ProfileEdit(LoginRequiredMixin, UserPassesTestMixin, UpdateView): model = User form_class = ProfileForm template_name = "profile/profile_new.html" slug_field = "username" def get_login_url(self): return reverse('account_login') def test_func(self): a = self.request.user.username #print (a) b = self.kwargs['slug'] #print (b) x = self.get_object().full_name #print (x) y = '' if a == b: if x != y: return True else: def get_absolute_url(self): print("failing") return reverse('profile:profile_view', kwargs={"slug": self.request.user.username})

Explicación LoginRequiredMixin obliga al usuario a iniciar sesión. Controles UserPassesTestMixin

  1. si nombre_completo es ''(vacío)

  2. si el nombre de usuario del usuario que inició sesión es el mismo que el campo slug

test_func() es todo correcto cuando devuelve True, pero en el bucle else , es decir, si la condición de prueba falla, la vista debería redirigir a 'profile_view' pero no lo hace. Obtengo la salida "failing" en la terminal. solo cuando hago lo mismo dentro de la función get_absolute_url() no funciona. La función get_absolute_url() completa no funciona. ¿Qué estoy haciendo mal aquí?

nota: el proceso total parece estar en un bucle aquí

  1. OBTENER /usuario1/editar/HTTP/1.1" 302 0

  2. GET /as/login/?next=/usuario1/editar/HTTP/1.1" 302 0

estas dos URLS siguen en bucle.

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda