В django login мы можем ввести if request.user.is_authenticated
, чтобы проверить, вошел ли пользователь в систему.
Но если мы хотим проверить статус входа конкретного пользователя, введя имя пользователя, мы получим следующее:
#Python
def checkLoginStatus(username):
#do some checks here....
return True or False
Вы можете использовать запрос, чтобы получить пользователя, которого вы хотите проверить is_logged_in или нет.
def checkLoginStatus(username):
if User.objects.filter(username=username).exists():
usr = User.objects.get(username=username)
if usr.is_authenticated:
return True
else:
return False
else:
print("No user exist with this {} username.".format(username))
return False
вы говорите о request.user, но здесь мы используем локальную переменную в качестве пользователя. Но для безопасности я редактирую свой ответ, чтобы использовать другое имя переменной.
@ Мелвин, конечно, проверю.
я пробовал... и, как сказал @Melvyn... он всегда возвращал True... и только для анонимных пользователей он возвращал False
ShashwatAgrawal @Melvyn, спасибо, что поправили меня. Мелвин, я должен удалить свой ответ? Так как не подходит.
Django не отслеживает состояние входа пользователя. Он отслеживает:
Если вы хотите отслеживать его, вам нужно сделать это самостоятельно:
session_key
.request.session
(запрос передается сигналу) и сохранить его в модели профиляsession_key
значение Noneis_logged_in
, которое извлекает ключ сеанса для пользователя из его модели профиля, а затем проверяет, действителен ли сеанс, получая сеанс из модели Session
. Если он действителен, пользователь вошел в систему.
То, как реализовано
is_authenticated
, всегда будет возвращать true. Только анонимные пользователи возвращают False.