Boa noite, realizei a mesmo processo do vídeo e da explicação escrita desse módulo, mas quando ocorre o login, ele retorna para a tela de login. Verifiquei a parte de registro e está funcionando corretamente.
# -*- coding: utf-8 -*-
# /usuarios/urls.py
from django.conf.urls import patterns, url
from views import RegistrarUsuarioView
urlpatterns = patterns('',
url(r'^registrar/$', RegistrarUsuarioView.as_view(), name='registrar'),
url(r'^login/$', 'django.contrib.auth.views.login', {'template_name':'login.html'}, name='login'),
url(r'^logout/$', 'django.contrib.auth.views.logout_then_login', {'login_url':'/login/'}, name='logout'),
)
settings.py
# código omitido
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
# .. código omitido
# LOGIN/AUTENTICACAO
LOGIN_URL="/login/"
LOGOUT_URL="/logout/"
LOGIN_REDIRECT_URL="/"
Minha view.py
# -*- coding:utf-8 -*-
# perfis/views.py
from django.shortcuts import render, redirect
from perfis.models import Perfil, Convite
#from django.contrib.auth.decorators import login_required
from django.contrib.auth.decorators import login_required
#from django.http import HttpResponse
# Create your views here.
@login_required
def index(request):
#return HttpResponse('Wellcome to ConnectedIn')
return render(request, 'index.html', {
'perfis': Perfil.objects.all(),
'perfil_logado': get_perfil_logado(request) #.convites_recebidos.all()
})
@login_required
def exibir(request, perfil_id):
print('ID do perfil recebido: %s ' % (perfil_id))
perfil = Perfil.objects.get(id=perfil_id)
perfil_logado = get_perfil_logado(request)
ja_eh_contato = perfil in perfil_logado.contatos.all()
return render(request, 'perfil.html', {
"perfil": perfil,
'perfil_logado': get_perfil_logado(request), #.convites_recebidos.all()
'ja_eh_contato': ja_eh_contato
})
@login_required
def convidar(request, perfil_id):
perfil_a_convidar = Perfil.objects.get(id=perfil_id)
perfil_logado = get_perfil_logado(request)
perfil_logado.convidar(perfil_a_convidar)
return redirect('index')
@login_required
def aceitar(request, convite_id):
convite = Convite.objects.get(id=convite_id)
convite.aceitar()
return redirect('index')
@login_required
def get_perfil_logado(request):
try:
print 'realizar o login'
return request.user.perfil
#return Perfil.objects.get(id=1)
except Exception as e:
raise Exception('Nao foi encontrado nenhum usuario logado.', e)
Tela de login:
<!-- connectedin/usuarios/templates/login.html -->
{% extends "base_usuario.html" %}
{% block body %}
<form class="form-signin" role="form" action="{% url 'django.contrib.auth.views.login' %}" method="post">
{% csrf_token %}
<h2 class="form-signin-heading">Login</h2>
<input type="text" id="id_username" name="username" class="form-control" placeholder="Nome" required autofocus>
<input type="password" id="id_password" name="password" class="form-control" placeholder="Senha" required>
<button class="btn btn-lg btn-primary btn-block" type="submit" value="Login">Login</button>
<input type="hidden" name="next" value="{{ next }}" />
{% if form.errors %}
<div class="alert alert-danger">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
Por favor, verifique o Email e/ou Senha informados
</div>
{% endif %}
<a href="{% url 'registrar' %}">registre-se</a>
</form>
{% endblock %}
Eu coloco o login e a senha, aperto o botão de login. Ele simplesmente recarrega a tela de login e aparece a mensagem: Por favor, verifique o e-mail e/ou senha informados.
TERMINAL:
[04/Nov/2016 00:00:07] "GET /login/?next=/ HTTP/1.1" 200 1178
[04/Nov/2016 00:11:07] "POST /login/ HTTP/1.1" 200 1415