Django Allauth如何更改username = first_name?

时间:2014-06-17 14:38:35

标签: django django-allauth

当使用django allauth进行社交帐户注册时,allauth会自动定义用户名,因为first_name是从3rdparty获得的。所以,例如:如果Facebook的John Cucumber注册他获得用户名“john”。我想把它变成“约翰黄瓜”。使用他的名字和姓氏作为用户名。在docs中没有看到任何相关内容。

由于

编辑:更多解释:

  1. 匿名不是默认 我试图实现这一点,默认情况下用户不是匿名的(使用昵称)。他们可以将用户名更改为nick,但只有在完全注册后,默认情况下才会使用社交网络的全名。

  2. 注册快速(无表格) 我也想让他们注册并快速登录(这就是为什么我首先使用社交网络登录,只需点击一下,你就是我页面的用户)。所以,我不想用注册表格来打扰用户。正如安德鲁的帖子中指出的那样 allauth的当前设置导致许多名称冲突(只有一个John,所有其他人都需要更改他们的用户名)。使用全名与使用名字冲突的次数会减少。但是,一旦这个问题得到解决,这是我后来要做的事情。

1 个答案:

答案 0 :(得分:2)

我认为在您的用户开始发现与生成的用户名冲突之前,这只是一个短暂的时间问题。只要你有一个以上的“约翰史密斯”,那么你就会遇到问题。

此外,许多用户可能不希望将其全名作为用户名。

就个人而言,我总是使用电子邮件进行登录,从不使用用户名,但如果您坚持使用,我建议您显示一个表单,允许选择用户名并将默认值设为"%s %s" % (first_name, last_name)或类似。

要确保显示表单,请编辑设置:

SOCIALACCOUNT_AUTO_SIGNUP = False  # require social accounts to use the signup form

来自documentation

  

[如果为true]尝试使用字段绕过注册表单(例如用户名,   电子邮件)从社交帐户提供商处检索。如果发生冲突   由于重复的电子邮件地址,注册表格仍然会出现   踢进去。

在呈现表单之前,您应该能够使用钩子来提供建议的用户名。

django-allauth与Twitter Bootstrap的工作示例*位于https://github.com/aellerton/demo-allauth-bootstrap。但是,它使用用户名,但它确实在社交注册后显示注册表单。

*免责声明:我写了这个例子。