Django Allauth 如何更改用户名=名字?

标签 django django-allauth

当使用 django allauth 进行社交帐户注册时,allauth 自动将用户名定义为从 3rdparty 获取的 first_name。因此,例如:如果 facebooks John Cucumber 注册,他将获得用户名“john”。我想将其更改为“john cucumber”。使用他的名字和姓氏作为用户名。在文档中没有看到任何关于此的信息。

谢谢

编辑:更多解释:

  1. 匿名不是默认值 我正在努力实现默认情况下用户不是匿名的(使用昵称)。他们可以将用户名更改为昵称,但只有在完全注册后,默认情况下他们才使用来自社交网络的全名。

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

最佳答案

我认为很快您的用户就会开始看到与生成的用户名发生冲突。一旦您拥有多个“John Smith”,就会遇到问题。

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

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

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

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

来自documentation :

[If true] Attempt to bypass the signup form by using fields (e.g. username, email) retrieved from the social account provider. If a conflict arises due to a duplicate e-mail address the signup form will still kick in.

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

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

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

关于Django Allauth 如何更改用户名=名字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24266657/

相关文章:

django - 对于带有选项的 django 模型字段,如何有效地获取数据库中使用的选项列表?

django - 谷歌 django-allauth 配置

django-allauth - 如何将 Google One Tap 登录与 django-allauth 集成?

django-allauth google 集成给出 "Social Network Login Failure"错误

django - 未找到 'account_email_verification_sent' 的反向。 'account_email_verification_sent' 不是有效的 View 函数或模式名称

python - 当前交易发生错误。在 'atomic' block 结束之前不能执行查询

sql - 我们如何才能获得所有用户名列表而不是使用 django ORM 的用户对象

django - 如何使用 UserProfile 扩展 Django 身份验证模型 User,避免相关ObjectDoesNotExist 错误?

django - 如何在通过 api 获得访问 token 时创建新用户和新的 django allauth 社交帐户?

python - 如何在 Django 中按日期对对象进行分组?