2

Я только что завершил установку Джанго-allauth и я получаю следующее сообщение, когда я перейти на страницу шаблона для всех социальных провайдеров:Django-allauth установки

AttributeError at /account/facebook/login/ 
'tuple' object has no attribute 'get' 

settings.social_account_providers

SOCIALACCOUNT_PROVIDERS = ( 
{'facebook': 
    {'SCOPE': ['email', 'publish_stream'], 
    'FB_LOGIN': {'auth_type': 'reauthenticate'}, 
    'METHOD': 'js_sdk'}}, 
{ 'twitter': 
    { 'SCOPE': ['r_emailaddress'] } }, 
{ 'google': 
    { 'SCOPE': ['https://www.googleapis.com/auth/userinfo.profile']}}, 
{ 'linkedin': 
    { 'SCOPE': ['r_emailaddress'] }} 

)

HTML

<a method="js_sdk" href="{% provider_login_url "Facebook" %}"></a> 
+1

Я думаю, что здесь отсутствует код. Где-то API возвращает кортеж, который вы пытаетесь получить, как вы делаете на dict, используя '.get()'. К кортежу обращается индекс, например, этот 'myTuple [0]'. –

ответ

2

Значение SOCIALACCOUNT_PROVIDERS должно быть в словаре ({...}). Я подозреваю, что в вашем случае это кортеж - я вижу, вы используете скобки для кортежей.

Попробуйте это:

python manage.py shell 
>>> from django.conf import settings 
>>> type(settings.SOCIALACCOUNT_PROVIDERS) 
<type 'dict'> 

это говорит ли <type 'dict'> в вашем случае?

+0

Фактически, нет, он говорит <тип 'tuple'> – harristrader

+0

В этом проблема. Он должен сказать, dict. Обязательно используйте 'SOCIALACCOUNT_PROVIDERS = {...}' - как и в, отмените скобки кортежа. – pennersr

Смежные вопросы