Я работаю над приложением, в котором пользователи могут войти в мое приложение, используя свои учетные данные учетной записи Twitter, которые я реализовал с помощью python-social-auth
. Теперь система аутентификации Django предоставляет User
объекты, с пятью главными атрибутами username
, password
, email
, first_name
и last_name
, как указано в документации: https://docs.djangoproject.com/en/1.7/topics/auth/default/#user-objectsDjango: атрибут 'email' объекта пользователя
Теперь, после того, как пользователь успешно входит в использовании его/ее счет Twitter, я хотите, чтобы определенные поля моей формы, такие как полное имя пользователя, адрес электронной почты, имя пользователя учетной записи Twitter и т. д., были предварительно заполнены. Для этой цели я использовал что-то подобное для полной формы имени поля предварительного заполнения пользователя:
{% if user and not user.is_anonymous %}
Full Name: <input type = "text" name = "name" value = "{{user.get_full_name}}"">
{% endif %}
Это то, что выше поле формы выглядит как после того, как пользователь успешно входит через его/ее твиттер:
Отлично! Работает так, как предполагалось. Аналогично, такие атрибуты, как username
, last_name
, first_name
, работают только для текущего зарегистрированного объекта User
.
Однако, когда я пытаюсь предварительно заполнить поле адреса электронной почты в моей форме, используя:
Email Address: <input type = "text" name = "email" value = "{{user.email}}"">
Однако значение {{user.email}}
не возвращает ничего, и мое поле формы выглядит примерно так:
Почему атрибут User
объекта не возвращающей адрес электронной почты, с помощью которой пользователь регистрируется при помощи своих учетных данных Twitter email
? Все остальные атрибуты User
, похоже, работают отлично. Какие-нибудь рассуждения позади этого?
EDIT 1:
Это то, что моя база данных в админке выглядит следующим образом:
Так email
поле не пусто, поэтому User
объект возвращает ничего для этого значения атрибута. Но почему адрес электронной почты не хранится в базе данных каждый раз, когда новый пользователь регистрируется в своих учетных записях Twitter?
Вы уверены, что вы получите адрес электронной почты от пользователя? Сначала я проверил бы, что у вас в db. –
, вероятно, вы получаете сигнал аутентификации от используемого вами бэкэнда, но он не может автоматически сохранить в базе данных некоторые способы, чтобы вы могли аутентифицироваться с помощью электронной почты пользователей, но на самом деле вы не можете его сохранить? –
@PatrickBeeson Я отредактировал свое оригинальное сообщение. Проблема заключается именно в том, что вы ожидали. Любые решения? –