2013-10-10 27 views
1

我已經安裝Django的allauth,之後,這是我的settings.pyDjango的allauth會議JSON序列化的錯誤

Django_apps = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.admin', 
    # Uncomment the next line to enable admin documentation: 
    # 'django.contrib.admindocs', 
) 

Third_party_apps = (
    'avatar', 
    'allauth', 
    'allauth.account', 
    'allauth.socialaccount', 
    'bootstrapform', 
    'allauth.socialaccount.providers.github', 
    'allauth.socialaccount.providers.twitter', 
) 

My_apps =() 

INSTALLED_APPS = Django_apps + Third_party_apps + My_apps 

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth', 
    "django.core.context_processors.request", 
    "allauth.account.context_processors.account", 
    "allauth.socialaccount.context_processors.socialaccount", 
) 
AUTHENTICATION_BACKENDS = (
    "django.contrib.auth.backends.ModelBackend", 
    "allauth.account.auth_backends.AuthenticationBackend", 
) 
ACCOUNT_ADAPTER ="allauth.account.adapter.DefaultAccountAdapter" 
ACCOUNT_AUTHENTICATION_METHOD = "username_email" 
ACCOUNT_EMAIL_REQUIRED = True 
ACCOUNT_EMAIL_VERIFICATION = "optional" 
ACCOUNT_USERNAME_MIN_LENGTH = 3 

,我相信我也正確設置我的urls.py.我還有兩個社交應用程序從django管理員與正確的twitter和github API密鑰和祕密。

但隨後的問題是每當我點擊通過Twitter登錄它顯示我正確的Twitter頁面權威性後,我授權應用它給了我這個錯誤..

<allauth.socialaccount.models.SocialLogin object at 0x7feb5875a650> is not JSON serializable 

,也是我得到幾乎相同與github錯誤。像

<allauth.socialaccount.models.SocialLogin object at 0x7feb5877a590> is not JSON serializable 

,所以,請幫助我瞭解什麼問題

+2

這可以幫助,https://github.com/pennersr/django-allauth/issues/386 –

+0

它的工作原理,非常感謝你 – ddiipp

+0

很高興它幫助。 –

回答

19

在Django的1.6,你必須改變SESSION_SERIALIZER參數鹹菜。把這個在您的settings.py:

SESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer' 

我不知道什麼時候allauth將成爲這個新的Django序列化格式兼容。見Django 1.6 release notes

+0

當前主人已經處理了這個 - 請參閱https://github.com/pennersr/django-allauth/issues/386 – pennersr

+2

請小心。將會話序列化爲PickleSerializer會引入安全風險,這就是爲什麼它首先被更改的原因: ** class serializers.PickleSerializer 支持任意的Python對象,但是,如上所述,可能導致遠程代碼執行漏洞如果攻擊者知道SECRET_KEY。** https://docs.djangoproject.com/en/1.6/topics/http/sessions/#session-serialization –

+0

@leonaneves should't that SESSION_SERIALIZER ='django.contrib .sessions.serializers.PickleSerializer'(缺少引號) – MartinM