Patrzę na tę stronę, ale nie mogę pojąć, jak to zrobić, ponieważ nie działa. Muszę sprawdzić, czy bieżący użytkownik witryny jest zalogowany (uwierzytelniony) i próbuję:
request.user.is_authenticated
pomimo upewnienia się, że użytkownik jest zalogowany, zwraca tylko:
>
Jestem w stanie wykonać inne żądania (z pierwszej sekcji powyższego adresu URL), takie jak:
request.user.is_active
która zwraca pomyślną odpowiedź.
python
django
authentication
Stóg
źródło
źródło
Odpowiedzi:
Aktualizacja dla Django 1.10+ :
is_authenticated
jest teraz atrybutem w Django 1.10. Metoda nadal istnieje dla kompatybilności wstecznej, ale zostanie usunięta w Django 2.0.Dla Django 1.9 i starszych :
is_authenticated
jest funkcją. Powinieneś to tak nazwaćJak zauważył Peter Rowell, może Cię to potknąć, że w domyślnym języku szablonów Django nie używasz nawiasów do wywoływania funkcji. Być może widziałeś coś takiego w kodzie szablonu:
Jednak w kodzie Python jest to rzeczywiście metoda w
User
klasie.źródło
Django 1.10+
Użyj atrybutu, a nie metody:
Zastosowanie metody o tej samej nazwie jest przestarzałe w Django 2.0 i nie jest już wspomniane w dokumentacji Django.
Zauważ, że dla Django 1.10 i 1.11 wartość tej właściwości to a,
CallableBool
a nie wartość logiczna, co może powodować dziwne błędy. Na przykład miałem widok, który zwrócił JSONże po aktualizacji do właściwości
request.user.is_authenticated
zgłaszał wyjątekTypeError: Object of type 'CallableBool' is not JSON serializable
. Rozwiązaniem było użycie JsonResponse, który mógł poprawnie obsługiwać obiekt CallableBool podczas szeregowania:źródło
request.user
. To, czy użytkownik jest zalogowany, czy nie ma znaczenia tylko w kontekście żądania, na przykład sesji przeglądarki.Następujący blok powinien działać:
źródło
Twoim zdaniem:
W tobie funkcje kontrolera dodaj dekorator:
źródło
request.user.is_authenticated
jeśli wiesz, że Twoja aplikacja zawsze wyloguje użytkownikaJeśli chcesz sprawdzić uwierzytelnionych użytkowników w swoim szablonie:
źródło
W przypadku wersji Django 2.0+ użyj:
Aby uzyskać więcej informacji, odwiedź https://www.django-rest-framework.org/api-guide/requests/#auth
request.user.is_authenticated () został usunięty w wersjach Django 2.0+.
źródło
request.user.is_authenticated
jest ciągle ważny. Odwołujesz się do dokumentacji django-rest-framework, a nie django