Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Voltando pro login

Olá, Boa tarde,

Gostaria de saber se há um jeito de eu voltar para a pagina de login toda vez que a pagina é fechada, e se entra no site pelo celular, há uma maneira de colocar na tela de login sempre que perde o foco da aplicação ?

O que eu quero é parecido com o @login_required, porem o @login_required ele só da erro na pagina, eu queria mudar a pagina, e mesmo que o pessoa esteja logada, o programa desligue ele do sistema e faça ir pro login.

Obrigado,

João Vitor.

4 respostas

Alguém ?

Oi João!

Django trabalha com controle de sessão, se fechar uma página ele não termina sua sessão, só se fechar o browser inteiro.

E sobre:

"há uma maneira de colocar na tela de login sempre que perde o foco da aplicação ?"

Não há. Você teria que acessar código nativo do dispositivo, algo que o browser não faz.

Sucesso e bom estudo!

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

solução!

Django é totalmente baseado em suas convenções e fugir delas só lhe causará dor de cabeça como agora. Django faz muita mágica o que é bom de um lado e ruim do outro porque quando erros acontecem fica muito difícil descobrir o que houve.

O request.user.perfil vem do middleware de autenticação utilizado pelo Django para que o desenvolvedor não tenha que se preocupar com essa parte. É justamente a mágica do Django que o esta deixando inseguro. Se você parar para entender toda a mágica vai contra a ideia do framework. Patadoxal, eu sei.

A respeito do seu código não consigo saber o que é pela mensagem vaga de erro. No entanto a mensagem

LoginView' object has no attribute 'user'

Diz que em algum lugar você tenta acessar uma propriedade que não existe. Vem que olhar cada código seu, como disse, a mensagem é vaga.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software