Hola, bueno trabajando en django y despues de solucionar lo del login Link de la solución ahora necesito un direccionamiento al mismo formulario en caso q el login no sea incorrecto.

Según leí se supone que si los datos ingresados en el login son incorrectos se vuelve al formulario, pero esto no me sucede. Este es el codigo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{% extends "base.html" %}

{% block content %}

{% if form.errors %}
    <p class="error">Disculpa, el nombre de usuario o contraseña no coinciden.</p>
{% endif %}

<form id="login" action="{% url django.contrib.auth.views.login %}" method="post">
  {% csrf_token %}
  <label class="label" for="username">Usuario:</label>
  <input class="campos" type="text" name="username" value="" id="username">
  <label class="label" for="password">Contraseña:</label>
  <input class="campos" type="password" name="password" value="" id="password">
  <input class="boton" type="submit" value="Ingresar" />
</form>

{% endblock %}

views.py:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#-*- coding: utf-8 -*-
import datetime
from django.http import HttpResponse
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.views.decorators.csrf import csrf_protect
from django.template.context import RequestContext
from django.contrib.auth import authenticate, login
from django.contrib.auth.forms import AuthenticationForm
from django.core.context_processors import csrf
from models import MarcaVehiculo, Cliente
from django.contrib.auth.decorators import login_required

def pagina_index(request):
    mensaje = "Esta es la Página de Index"
    context = {
    'msg': mensaje,
    }
    return render_to_response('index.html', context, context_instance=RequestContext(request))

def login(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
        else:
            print "El Usuario no se encuentra activo..."
    else:
        print "Los datos ingresados no son correctos..."

def logout(request):
    logout(request)

@login_required
def loggedin(request):
    context={
    }
    return render_to_response('inicio.html', context)

@login_required
def listadoClientes(request):
    clientes = Cliente.objects.all()
    context = {
    'clientes' : clientes,
    }
    return render_to_response('clientes.html',  context, context_instance=RequestContext(request))125

urls.py:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#-*- coding: utf-8 -*-
import os.path

from django.contrib.auth.views import logout, login 
from django.conf.urls.defaults import *
from taller.vehiculo.views import pagina_index, loggedin, listadoClientes

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Example:
    #(r'^taller/', include('taller.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    (r'^$', pagina_index),
    (r'^admin/', include(admin.site.urls)),
    (r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': os.path.join(os.path.dirname(__file__), 'media')}),
    (r'^inicio/$', loggedin),
    (r'^salir/$', logout),
    (r'^clientes/$', listadoClientes),
    (r'^account/login/$', 'django.contrib.auth.views.login'),

)

Este es el error.

1
2
3
4
5
6
7
8
TemplateDoesNotExist at /account/login/
registration/login.html
Request Method: POST
Request URL:    http://localhost:8000/account/login/
Django Version: 1.3
Exception Type: TemplateDoesNotExist
Exception Value:    
registration/login.html125

Bueno espero me puedan ayudar, saludos.

preguntado 10 May '11, 20:26

MalaLeche's gravatar image

MalaLeche
415273238
Aceptadas: 36%

editó 11 May '11, 17:15

¿Y qué es lo que pasa cuando haces submit y hay errores?

(10 May '11, 20:30) haplo

Disculpa, este es el error.

TemplateDoesNotExist at /account/login/ registration/login.html Request Method: POST Request URL: http://localhost:8000/account/login/ Django Version: 1.3 Exception Type: TemplateDoesNotExist Exception Value: registration/login.html

(10 May '11, 20:32) MalaLeche

¿Podrías poner el contenido de tu 'views.py' y de tu 'urls.py'? Porque con estos datos es bastante complicado saber qué pasa.

(11 May '11, 12:54) franchukelly

@franchukelly agregue lo que pides, saludos.

(11 May '11, 17:16) MalaLeche

Así a bote pronto sin mirar mucho tu código:

1
(r'^account/login/$', 'django.contrib.auth.views.login'),

debería de ser: (r'^cuenta/login/$', login, {'template_name':'nombredetuplantilladelogin.html'} ),

enlace permanente

respondido 11 May '11, 19:25

monobot's gravatar image

monobot
912213144
Aceptadas: 15%

Muchas gracias @monobot funciona muy bien.

(11 May '11, 23:09) MalaLeche

El error indica que no encuentra la template registration/login.html, que es la template por defecto que busca la vista django.contrib.auth.views.login. Si estás usando otra plantilla para el login, deberías indicárselo a la vista en urls.py:

1
(r'^account/login/$', 'django.contrib.auth.views.login', template_name='login.html'),

Aparte, no tiene sentido que definas el login en account/login/ en urls.py pero sin embargo tengas LOGIN_URL como /, deberías o cambiar uno o cambiar el otro.

enlace permanente

respondido 11 May '11, 22:02

haplo's gravatar image

haplo
4.8k24566
Aceptadas: 72%

Vaya, he respondido esto y no me había fijado que monobot ya había dado la misma solución.

(11 May '11, 22:02) haplo

@haplo probé las tu solución sin cambiar el LOGIN_URL y funciona bien, y se dejo el LOGIN_URL y elimino la url no funciona.

(11 May '11, 23:13) MalaLeche
1

A lo que me refería con lo de LOGIN_URL es que debería coincidir esa URL con la que tengas definida para el login en urls.py, o sea, LOGIN_URL debería ser "account/login/". Si no coinciden no debería funcionar la redirección por el decorador login_required.

(11 May '11, 23:46) haplo

Ok, ahora entendí, muchas gracias por aclarar mi duda, saludos.

(12 May '11, 00:02) MalaLeche

Quizás tengas mal definido (o no esté definido) el parámetro LOGIN_URL en tu settings.py.

enlace permanente

respondido 10 May '11, 20:32

haplo's gravatar image

haplo
4.8k24566
Aceptadas: 72%

Claro lo tengo definido como:

LOGIN_URL = '/'

ya que utilizo vistas con @login_required

(10 May '11, 20:43) MalaLeche

También podrías hacerlo al reves; no redirecciones cuando haya errores, sino cuando no los haya. Es decir, el formulario en la vista de login apunta a la misma vista, y solo cuando hayas verificado que el login y el password son correctos "escapas" redireccionando a otra vista.

enlace permanente

respondido 11 May '11, 21:41

euribates's gravatar image

euribates
47666
Aceptadas: 28%

Tu respuesta
Activar/desactivar vista previa

Seguir esta pregunta

Por Email:

Una vez que entres podrás suscribirte desde aquí para recibir actualizaciones

Por RSS:

Respuestas

Respuestas y Comentarios

Trucos del editor

  • *italic* or __italic__
  • **negrita** o __negrita__
  • enlace:
    [texto](http://url.com/ "Pregunta")
  • imagen:
    ![alt texto](/path/img.jpg "Pregunta")
  • lista numerada:
    1. Foo
    2. Bar
  • Código:
    • Dentro de un parrafo:
      `codigo`
    • Fragmento de código:
      Selecciona el texto y usa el botón del icono de ceros y unos
  • Resaltado de sintaxis:
    Hay dos maneras de hacerlo:
    • La 1ª línea es un Shebang #!/usr/bin/env python
    • La 1ª línea es un lexer
      :::python

      Algunos lexer validos:
      :::python
      :::django
      :::css+django
      :::html+django
      :::console
      :::pycon
  • Para añadir un salto de línea simplemente deja una línea en blanco entre parrafos
  • se permite código HTML básico

Etiquetas de la pregunta:

×174

pregunta realizada: 10 May '11, 20:26

pregunta vista: 991 veces

última modificación: 12 May '11, 00:02