当使用django allauth进行社交帐户注册时,allauth会自动定义用户名,因为first_name是从3rdparty获得的。所以,例如:如果Facebook的John Cucumber注册他获得用户名“john”。我想把它变成“约翰黄瓜”。使用他的名字和姓氏作为用户名。在docs中没有看到任何相关内容。
由于
编辑:更多解释:
匿名不是默认 我试图实现这一点,默认情况下用户不是匿名的(使用昵称)。他们可以将用户名更改为nick,但只有在完全注册后,默认情况下才会使用社交网络的全名。
注册快速(无表格) 我也想让他们注册并快速登录(这就是为什么我首先使用社交网络登录,只需点击一下,你就是我页面的用户)。所以,我不想用注册表格来打扰用户。正如安德鲁的帖子中指出的那样 allauth的当前设置导致许多名称冲突(只有一个John,所有其他人都需要更改他们的用户名)。使用全名与使用名字冲突的次数会减少。但是,一旦这个问题得到解决,这是我后来要做的事情。
答案 0 :(得分:2)
我认为在您的用户开始发现与生成的用户名冲突之前,这只是一个短暂的时间问题。只要你有一个以上的“约翰史密斯”,那么你就会遇到问题。
此外,许多用户可能不希望将其全名作为用户名。
就个人而言,我总是使用电子邮件进行登录,从不使用用户名,但如果您坚持使用,我建议您显示一个表单,允许选择用户名并将默认值设为"%s %s" % (first_name, last_name)
或类似。
要确保显示表单,请编辑设置:
SOCIALACCOUNT_AUTO_SIGNUP = False # require social accounts to use the signup form
[如果为true]尝试使用字段绕过注册表单(例如用户名, 电子邮件)从社交帐户提供商处检索。如果发生冲突 由于重复的电子邮件地址,注册表格仍然会出现 踢进去。
在呈现表单之前,您应该能够使用钩子来提供建议的用户名。
django-allauth与Twitter Bootstrap的工作示例*位于https://github.com/aellerton/demo-allauth-bootstrap。但是,它不使用用户名,但它确实在社交注册后显示注册表单。
*免责声明:我写了这个例子。