Login POST se cuelga al hacer un HttpResponseRedirect

11 views
Skip to first unread message

Juan Manuel

unread,
Apr 1, 2020, 11:59:22 AM4/1/20
to djan...@googlegroups.com, djan...@googlegroups.com
Buenas, me llamo Juan Manuel y les consulto por si les pasó alguna vez:
Tengo una pantalla login, común y corriente, cuando ejecuto el proceso de logueo (auntentifica y registra el usuario bien) cuando tiene que redireccionar con un HttpResponseRedirect() el navegador queda cargando indefinidamente (queda en la pantalla de logueo cargando el request).
Por lo que pude ver en consola (abajo pongo la captura), luego del POST quiere redirigir con un HTTP 302 y queda ahí.
Estuve buscando sobre el tema pero no encuentro que puede ser, les paso algunas cosas que noté:
1) No pasa siempre
2) Chrome con modo desarrollo con cache desactivada no lo hace.
3) Firefox no lo hace
4) Con reverse() hace lo mismo (internamente llama a HttpResponseRedirect())

Cuando queda colgado así, si presiono F5 para recargar, ejecuta bien la redirección, pasa tanto en el servidor de desarrollo como en producción (servidor Apache).
image.png

url.py:
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, include, url
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from .views import *
admin.autodiscover()
urlpatterns = patterns('',
    url(r'^', include('tadese.urls')),    
    url(r'^login/$', login),
    url(r'^login_cuota/$', login_cuota),
    url(r'^logout/$', logout),
    url(r'^admin/', include(admin.site.urls)),
)+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
if settings.DEBUG is False:   #if DEBUG is True it will be served automatically
    urlpatterns += patterns('',
            url(r'^staticfiles/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
    )
handler500 = volverHome
handler404 = volverHome


view.py

# -*- coding: utf-8 -*-
from django.contrib.auth import login as django_login, authenticate, logout as django_logout
from django.shortcuts import *
from settings import *
from django.core.urlresolvers import reverse
from django.contrib import messages
from tadese.models import Configuracion,Cuotas,Tributo,UserProfile
from tadese.utilidades import TRIBUTOS_LOGIN
from django.db.models import Q
from django.template.defaulttags import register
from django.conf import settings
def login(request):
    error = None
    LOGIN_REDIRECT_URL=settings.LOGIN_REDIRECT_URL
    if request.method == 'GET':     
      if request.user.is_authenticated():    
        return volverHome(request)      
    try:
        sitio = Configuracion.objects.all().first()
    except Configuracion.DoesNotExist:
        sitio = None
   
    if sitio <> None:
      unico_padr = (sitio.ver_unico_padron == 'S')
      if sitio.mantenimiento == 1:
        return render_to_response('mantenimiento.html', {'dirMuni':MUNI_DIR,'sitio':sitio},context_instance=RequestContext(request))
    else:
      unico_padr = False
    if request.method == 'POST':
       
        user = authenticate(username=request.POST['username'], password=request.POST['password'],tributo=request.POST['tributo'])
        if user is not None:
          if user.is_active:
            django_login(request, user)
           
            if user.userprofile.tipoUsr==0:
                request.session["usuario"] = request.POST['username']
                if unico_padr:
                  try:
                        padr = Cuotas.objects.filter(padron=request.POST['username'],estado=0).order_by('-id_cuota').first()
                        if padr:
                          LOGIN_REDIRECT_URL = reverse('ver_cuotas', kwargs={'idp':padr.id_padron})
                          return HttpResponseRedirect(LOGIN_REDIRECT_URL)
                  except:
                        padr = None  
                else:
                  LOGIN_REDIRECT_URL = reverse('padrones_responsable')
            return volverHome(request)
          else:
          ## invalid login
           error = u'Verifique que:\n. Los datos sean correctos.\n. Posea cuotas generadas en el sistema.'
        else:
          ## invalid login
           error = u'Verifique que:\n. Los datos sean correctos.\n. Posea cuotas generadas en el sistema.'
          #return direct_to_template(request, 'invalid_login.html')
    if error:
      messages.add_message(request, messages.ERROR,u'%s' % (error))
    tributos = Tributo.objects.filter()  
    return render_to_response('index.html', {'dirMuni':MUNI_DIR,'sitio':sitio,'tributos':tributos},context_instance=RequestContext(request))
def logout(request):
    request.session.clear()
    django_logout(request)
    return HttpResponseRedirect(LOGIN_URL)
def volverHome(request):
   
    if not request.user.is_authenticated():
      return HttpResponseRedirect(LOGIN_URL)    
   
    if request.user.userprofile.tipoUsr==0:
        LOGIN_REDIRECT_URL = reverse('padrones_responsable')
    elif request.user.userprofile.tipoUsr==1:
        LOGIN_REDIRECT_URL = reverse('padrones_estudio')
    else:
        LOGIN_REDIRECT_URL = reverse('padrones_responsable')
   
    return HttpResponseRedirect(LOGIN_REDIRECT_URL)


________________________________________________________________

  

Reply all
Reply to author
Forward
0 new messages