Использование extra_data из python-social-auth в шаблоне Django

Я использую python-social-auth для входа в свое собственное веб-приложение из LinkedIn. Я успешно авторизовался и перенаправляюсь на свою домашнюю страницу. Следующим шагом является использование дополнительных данных (например, UserSocialAuth.extra_data). Может ли кто-нибудь привести пример того, как получить доступ к дополнительным данным в шаблонах Django или представлениях Django?

Вот такие у меня были настройки.

SOCIAL_AUTH_LOGIN_URL = ''

SOCIAL_AUTH_PIPELINE = (
'social.pipeline.social_auth.social_details',
'social.pipeline.social_auth.social_uid',
'social.pipeline.social_auth.auth_allowed',
'social.pipeline.social_auth.social_user',
'social.pipeline.user.get_username',
'social.pipeline.user.create_user',
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'social.pipeline.user.user_details'
)

SOCIAL_AUTH_LINKEDIN_OAUTH2_SCOPE = ['r_basicprofile', 'r_emailaddress', 'rw_company_admin', 'w_share']
SOCIAL_AUTH_LINKEDIN_OAUTH2_FIELD_SELECTORS = ['first-name', 'last-name', 'email-address', 'headline']

SOCIAL_AUTH_LINKEDIN_OAUTH2_EXTRA_DATA = [('id', 'id'),
                                      ('first-name', 'first_name'),
                                      ('last-name', 'last_name'),
                                      ('email-address', 'email_address'),
                                      ('headline', 'headline'),
                                      ('industry', 'industry')]

То, что я собираюсь сделать, похоже на:

<html><body>Here we go! {{ user.first_name }} {{ user.last_name }}
{{ user.email }}
{{ user.extra_data.headline }}</body></html>

Любые комментарии будут высоко оценены!


person Mouwu Lin    schedule 05.11.2016    source источник


Ответы (1)


Вы можете получить доступ к данным в представлении Django следующим образом:

if request.user.is_authenticated:
    linkedin_user = request.user.social_auth.get(provider ='linkedin-oauth2')
    extra_data = linkedin_user.extra_data

Затем вы можете ввести данные в свой шаблон для отображения

person Thomas Graziani    schedule 10.02.2018