Flávio há uma maneira de eu conseguir verificar se o usuário está na pagina ainda ?
eu tenho uma duvida sobre um item do curso de django que é:
def get_perfil_logado(request):
return request.user.perfil
da onde o user.perfil vem ?
eu estou tentando criar um projeto e estou na fase de login, eu não consegui entender a classe login do django, então eu estou tentanto fazer eu mesmo, porem estou tendo problemas ... pode me ajudar a achar ?
from django.shortcuts import render, redirect
from django.views.generic import View
from usuarios.forms import *
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required
from usuarios.models import *
class LoginView (View):
template_name = "login.html"
@login_required
def get (self, request):
return render(request, self.template_name)
@login_required
def post(self, request):
# preenche o form
form = LoginForm(request.POST)
#verifica se é valido
if form.is_valid():
dados_form = form.data
nome = User.objects.filter(username = dados_form['nome']).exists()
senha = User.objects.filter(password = dados_form['senha']).exists()
if (nome and senha):
return redirect('menu')
else:
return render(request, self.template_name, {"form" : form })
return render(request, self.template_name, {"form" : form })
@login_required
def menu(request):
return render(request, "menu.html", { "perfil_logado" : get_perfil_logado(request) })
@login_required
def get_perfil_logado(request):
return request.user.perfil
from django.db import models
from django.contrib.auth.models import User
class Perfil(models.Model):
usuario = models.OneToOneField(User, related_name = "perfil")
@property
def nome(self):
return self.usuario.username
@property
def senha(self):
return self.usuario.password
from usuarios.views import *
from django.conf.urls import patterns, url
urlpatterns = patterns ('',
url(r'^$', LoginView.as_view(), name = 'login'),
url(r'^menu/$', menu, name = 'menu'),
)
from django import forms
from django.contrib.auth.models import User
# -*- coding: utf-8 -*-
class LoginForm(forms.Form):
# atributos que equivalem aos atributos do nosso formulario
# Muita atencao, a convencao eh que eles tenham o mesmo nome definido no atributo name, em connectedin/usuarios/templates/registrar.html
nome = forms.CharField(required = True)
senha = forms.CharField(required = True)
def is_valid(self):
valid = True
if not super(LoginForm, self).is_valid():
self.adiciona_erro("Por favor, verifique os dados")
valid = False
return valid
def adiciona_erro(self, message):
errors = self._errors.setdefault(forms.forms.NON_FIELD_ERRORS, forms.utils.ErrorList())
errors.append(message)
por enquanto eu estou tendo esse erro :
AttributeError at /
'LoginView' object has no attribute 'user'
Request Method: GET
Request URL: http://localhost:8000/
Django Version: 1.7.4
Exception Type: AttributeError
Exception Value:
'LoginView' object has no attribute 'user'
Eu não estou conseguindo prosseguir, eu não sei nem se o código que estou tentando implementar é certo
Me ajude por favor :(,
Obrigado,
João Vitor