Eu estou olhando para este site, mas simplesmente não consigo descobrir como fazer isso, pois não está funcionando. Preciso verificar se o usuário do site atual está logado (autenticado) e estou tentando:
request.user.is_authenticated
apesar de ter certeza de que o usuário está logado, ele retorna apenas:
>
Sou capaz de fazer outras solicitações (da primeira seção no URL acima), como:
request.user.is_active
que retorna uma resposta bem-sucedida.
python
django
authentication
Rick
fonte
fonte
Respostas:
Atualização para Django 1.10+ :
is_authenticated
agora é um atributo no Django 1.10. O método ainda existe para compatibilidade com versões anteriores, mas será removido no Django 2.0.Para o Django 1.9 e mais antigo :
is_authenticated
é uma função. Você deveria chamar assimComo Peter Rowell apontou, o que pode estar atrapalhando você é que, na linguagem padrão do Django, você não usa parênteses para chamar funções. Então você pode ter visto algo assim no código do modelo:
No entanto, no código Python, é realmente um método na
User
classe.fonte
Django 1.10+
Use um atributo, não um método:
O uso do método com o mesmo nome foi descontinuado no Django 2.0 e não é mais mencionado na documentação do Django.
Note que para o Django 1.10 e 1.11, o valor da propriedade é a
CallableBool
e não um booleano, o que pode causar alguns erros estranhos. Por exemplo, eu tinha uma visualização que retornava JSONque depois de atualizado para a propriedade
request.user.is_authenticated
estava lançando a exceçãoTypeError: Object of type 'CallableBool' is not JSON serializable
. A solução foi usar o JsonResponse, que poderia manipular o objeto CallableBool corretamente ao serializar:fonte
request.user
. Se um usuário está conectado ou não apenas importa no contexto da solicitação, por exemplo, a sessão do navegador.O bloco a seguir deve funcionar:
fonte
Na sua opinião:
Em suas funções de controlador, adicione decorador:
fonte
request.user.is_authenticated
se você sabe que a sua aplicação será sempre registrar o usuário para foraSe você deseja verificar se há usuários autenticados no seu modelo, então:
fonte
Para versões do Django 2.0+, use:
Para mais informações, visite https://www.django-rest-framework.org/api-guide/requests/#auth
request.user.is_authenticated () foi removido nas versões do Django 2.0+.
fonte
request.user.is_authenticated
ainda é válido. Você está referenciando a documentação do django-rest-framework e não o django