Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让用户在Django social auth注册期间设置用户名?_Django_Django Socialauth - Fatal编程技术网

如何让用户在Django social auth注册期间设置用户名?

如何让用户在Django social auth注册期间设置用户名?,django,django-socialauth,Django,Django Socialauth,我使用Django social auth(omab版本只是为了避免与其他同名项目混淆),现在我正在Facebook上尝试。可以注册新用户并在没有任何问题的情况下登录/注销。我唯一想添加的是注册期间的一个表单,允许用户输入想要在站点上使用的用户名,因为目前用户名要么是facebook用户名(我不想强制用户使用相同的用户名),要么是uuid(如果没有facebook用户名)(这很难看) 我正在阅读文档、管道和所有这些东西,但我不确定是否理解,欢迎提供任何提示或解释。我在social auth附带的

我使用Django social auth(omab版本只是为了避免与其他同名项目混淆),现在我正在Facebook上尝试。可以注册新用户并在没有任何问题的情况下登录/注销。我唯一想添加的是注册期间的一个表单,允许用户输入想要在站点上使用的用户名,因为目前用户名要么是facebook用户名(我不想强制用户使用相同的用户名),要么是uuid(如果没有facebook用户名)(这很难看)


我正在阅读文档、管道和所有这些东西,但我不确定是否理解,欢迎提供任何提示或解释。

我在social auth附带的示例应用程序中找到了它。这里有一个要使用的管道示例,甚至还有需要实现的表单和视图。只有很少甚至没有必要进行任何更改才能使实现正常工作。在我写这篇文章时,至少需要在表单上做一些工作,因为你可以输入一个已经使用的用户名。

接受的答案链接到整个GitHub项目,但没有解释其中哪些部分是相关的,有些部分是过时的,所以我将尝试分享我学到的

django social auth已被弃用,替代品为,它将django与项目集成在一起

关于python social auth的文档是相关的。在默认管道中,这是生成用户名的阶段:

# Make up a username for this person, appends a random string at the end if
# there's any collision.
'social_core.pipeline.user.get_username',
显示默认行为。我们必须复制这些方面:

  • 它通过检查
    storage.user.user\u exists(username=…)
    并修改用户名直到其唯一,从而确保它提供的用户名是唯一的
  • 它返回字典
    {'username':'…'}
    ,并将其传递到管道中的下一个阶段
要提示用户,我们需要自定义。这使我们可以暂停管道,等待用户提交用户名表单,然后在获得用户名后恢复该表单