我确实看到了几个类似的问题,但他们似乎并没有完全回答我遇到的问题。
到目前为止,我一直在做manage.py runserver
, 在本地运行。
起初我试着把它放在我的settings.py中:
import allauth
ACCOUNT_EMAIL_REQUIRED = True
然后尝试将其扩展到:
import allauth
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_AUTHENTICATION_METHOD = "username_email"
ACCOUNT_USERNAME_REQUIRED = True
SOCIALACCOUNT_AUTO_SIGNUP = True
但是当我尝试使用我的 google 帐户登录时(也就是说,在 openId-googlem 下而不是直接的 google 下),我可以看到它收到了我的电子邮件,但它不使用我的电子邮件。在回调函数中,我尝试加入一堆打印语句,当我打印以下内容时,它看起来像是从返回 url 中提取的user.__dict__
:
{'_state': <django.db.models.base.ModelState object at 0x101604dd0>,
'date_joined': datetime.datetime(2012, 12, 3, 4, 35, 41, 949526, tzinfo=<UTC>),
'email': u'CORRECT_USERNAME@gmail.com',
'first_name': '',
'id': None,
'is_active': True,
'is_staff': False,
'is_superuser': False,
'last_login': datetime.datetime(2012, 12, 3, 4, 35, 41, 949506, tzinfo=<UTC>),
'last_name': '',
'password': '',
'username': ''}
也就是说,它填充电子邮件字段,但不填充username
字段。我认为默认情况下,allauth 会填充username
with CORRECT_USERNAME
,但它看起来是空的。然后当我打印出帐户时,我在该user_id
字段中看不到任何内容。
当我跳到个人资料页面时,它会将username
“用户”列为“用户”,这看起来像是绝对的后备/默认值。也就是说,这个:
{% user_display user %}
<p>Another try... <br />
{{user.username}}
<p>---------------------------</p>
{{ user.account_provider }}
<p>---------------------------</p>
{{ user.get_provider }}
<p>---------------------------</p>
给了我这个:
user
Another try...
user
---------------------------
---------------------------
---------------------------
我在 runserver 控制台中看不到任何错误。
我还需要添加到 settings.py 中吗?我需要编写一些回调函数来从电子邮件字段中提取用户名吗?
如果这有什么不同,我正在使用 python 2.6.1(Snow Leopard)。
提前致谢!