我正在为 face-book 使用 Python socia auth。我修改了用户模型的默认 Django 行为并删除了 username
字段。
我在自定义用户模型中添加了这个:USERNAME_FIELD = 'email'
但我在尝试登录时遇到此错误
TypeError at /complete/facebook/
'username' is an invalid keyword argument for this function
我知道它在尝试创建用户时找不到用户名字段,因此会抛出此错误。
我已经定义了以下设置,但我的问题仍然存在:
SOCIAL_AUTH_USER_MODEL = 'accounts.User'
SOCIAL_AUTH_USERNAME_IS_FULL_EMAIL = True
有什么解决办法吗?
最佳答案
我知道这个问题已经发布几个月了,但我遇到了同样的问题并找到了解决方案。
这个问题可以用pipeline来解决。默认管道执行此操作:
def create_user(strategy, details, user=None, *args, **kwargs):
if user:
return {'is_new': False}
fields = dict((name, kwargs.get(name) or details.get(name))
for name in strategy.setting('USER_FIELDS',
USER_FIELDS))
if not fields:
return
return {
'is_new': True,
'user': strategy.create_user(**fields)
}
在您的设置中覆盖 USER_FIELDS
,仅保留 email
。或者,您可以创建全新的 create_user
方法。
关于python - Python-social-auth 中用户名字段的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29413741/