【发布时间】:2015-01-13 16:58:18
【问题描述】:
我正在使用 django 1.6.5 和 django-allauth 0.18.0,一旦我们在 django 的管理面板中创建了社交应用程序,社交登录就会按预期工作.
所以,我的下一步是尝试通过使用适配器来改变模块的行为。
在docs 中看起来很简单,但不知何故,我似乎无法让 django-allauth 使用我的自定义适配器。
所以这是我尝试将 pdb 放入我的适配器方法的尝试。
这是我的文件夹/文件结构:
.
├── manage.py
├── requirements.freeze
├── foo
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── foo_app
├── adapters.py
├── views.py
├── etc...
这是我的 foo/settings.py 文件:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sites',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'south',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.facebook',
'foo_app'
)
ACCOUNT_ADAPTER="foo_app.adapters.FooAppAccountAdapter"
SOCIALACCOUNT_ADAPTER="foo_app.adapters.FooAppSocialAccountAdapter"
这是我的 foo_app/adapters.py 文件:
# -*- coding: utf-8 -*-
import pdb
from allauth.account.adapter import DefaultAccountAdapter
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter
class FooAppAccountAdapter(DefaultAccountAdapter):
def save_user(self, request, user, form, commit=true):
print "FooAppAccountAdapter.save_user"
pdb.set_trace()
return super(FooAppAccountAdapter, self).save_user(
request, user, form, commit
)
class FooAppSocialAccountAdapter(DefaultSocialAccountAdapter):
def pre_social_login(self, request, sociallogin):
print "FooAppSocialAccountAdapter.pre_social_login"
pdb.set_trace()
return super(FooAppSocialAccountAdapter, self).pre_social_login(
request, sociallogin
)
def save_user(self, request, sociallogin, form=None):
print "FooAppSocialAccountAdapter.save_user"
pdb.set_trace()
return super(FooAppSocialAccountAdapter, self).save_user(
request, sociallogin, form
)
我的 set_trace 都没有工作,我想我可能只是忘记了设置中的某些内容,但无法弄清楚。
那么我错过了什么或做错了什么?
【问题讨论】:
-
我将深入研究模块以了解发生了什么。如果我偶然发现解决方案,我会发布答案。
-
可能与您的问题没有直接关系,但
commit=True不是commit=true -
@bchhun 你有想过这个吗?
-
@JonathanCox 很遗憾,没有:(
-
很可能您的适配器位于您的 INSTALLED_APPS 中的 all-auth 之后列出的应用程序中。确保将其放入之前列出的应用程序中,它应该会捡起它。
标签: django adapter django-allauth