Есть две вещи, на которые вы должны обратить внимание и знать о них, основываясь на вашем вопросе и примере.
Во-первых, способ обработки альтернативных методов аутентификации (например, Facebook oauth) - бэкэнды аутентификации .Вы можете посмотреть на djangopackages.com для существующих опций или написать свой собственный.Заданные вами бэкэнд (ы) определяют, какие параметры authenticate()
ожидает получить (например, бэкэнд Facebook не будет ожидать пароль, поскольку пароль не имеет смысла в этом контексте).
Во-вторых, выполнение user.password не даст вам действительный пароль пользователя.В качестве меры безопасности Django хранит пароли как соленые односторонние хэши .Это означает, что по своей сути вы не можете определить пароль пользователя на основе того, что хранится в базе данных.