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

396
Vistas
El inicio de sesión funciona en Django Rest Framework pero no en la interfaz

Tengo las siguientes vistas:

login_view :

 @api_view(['POST']) def login_view(request): try: user_data = request.data username = user_data["username"] password = user_data["password"] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) serializer = UserSerializer(user) return Response( { "user":serializer.data, "login": True }) else: return Response(serializers.errors, status=status.HTTP_400_BAD_REQUEST) except: raise Http404

Cerrar sesión_ver :

 @api_view(['POST']) def logout_view(request): if request.user.is_authenticated: logout(request) return Response(status=status.HTTP_200_OK) else: return Response(status=status.HTTP_403_FORBIDDEN)

y buscar la función en la interfaz :

 const onSubmit = () => { fetch('http://127.0.0.1:8000/api/login/',{ method:"POST", headers: { 'Accept': 'application/json, text/plain', 'Content-Type': 'application/json; charset=UTF-8' }, body: JSON.stringify({ "username": values.Username, "password": values.Password }) }).then((response) => {response.json().then(data => { if(response.ok){ setError(''); console.log(data); } else{ setError(''); setError('Invalid Username or Password'); } })}); };

y el siguiente problema:

Cuando intento iniciar sesión en la interfaz, obtengo una respuesta esperada:

 { user: {id: 4, username: 'Tester_1', date_joined: '2021-12-02T22:38:29.323393Z', trust_index: 0} login: true }

pero mi usuario no ha iniciado sesión en Rest Framework y no puedo usar la vista de cierre de sesión en Frontend: después de iniciar sesión en Frontend

Cuando uso el panel de Rest Framework para iniciar sesión, todo funciona bien, el usuario inicia sesión y puedo usar la vista de cierre de sesión: Después de iniciar sesión en Rest Framework

He estado luchando con esto por un tiempo. ¿Alguna idea de cómo resolver este problema?

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

0

No conozco su código global, pero parece que está tratando de crear un sistema de inicio de sesión/autenticación basado en sesión, trayendo el enfoque del panel web drf generado automáticamente a su frente. En esta estructura separada (anverso y reverso) este no es el mejor enfoque, al menos construyes una estructura extraña donde Django encapsula tu frente y administra sesiones, etc.

Una forma probablemente mejor es usar la generación/autenticación de tokens jwt. Donde se autentica (desde el frente) usando un usuario y contraseña pero recibe (desde atrás) un token que debe almacenar localmente (almacenamiento local, para emular una sesión).

En cada solicitud, pasa el token en el encabezado y, si todo está bien (token válido), drf hace las cosas.

Uso JWT simple ( https://django-rest-framework-simplejwt.readthedocs.io/en/latest/ ). Realmente simple

Aquí hay un ejemplo de urls.py para puntos finales de autenticación:

 from django.urls import include, path from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView website_v1 = 'website/v1/' urlpatterns = [ path(f'{website_v1}login/', TokenObtainPairView.as_view(), name='token_obtain_pair'), path(f'{website_v1}login/refresh/', TokenRefreshView.as_view(), name='token_refresh'), ]

Y al frente, Axios ( https://axios-http.com/docs/intro ) es una buena biblioteca js para automatizar el paso del token en la obtención de datos mediante interceptores.

¡Buena suerte!

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