Django:在用户名中使用哈希/guid

Django:在用户名中使用哈希/guid,django,email,login,Django,Email,Login,我将使用电子邮件作为整个网站的用户名,但是我仍然需要在用户模型中预先填写必填用户名字段 起初,我想使用电子邮件的md5散列作为用户名,但考虑到30个字符的限制,这是不可能的。此外,我不认为我可以使用guid,因为它们在转换为字符串十六进制时也超过30个字符 非常感谢您的任何建议 我不会过分强调guid超过30个字符。一种合理的方法可能是使用类似MD5的内容对GUID进行散列,然后删除最后2个字符。你发生碰撞的机会实际上是零。(1630是一个非常大的数字)。我不会过分强调guid超过30个字符。一

我将使用电子邮件作为整个网站的用户名,但是我仍然需要在用户模型中预先填写必填用户名字段

起初,我想使用电子邮件的md5散列作为用户名,但考虑到30个字符的限制,这是不可能的。此外,我不认为我可以使用guid,因为它们在转换为字符串十六进制时也超过30个字符


非常感谢您的任何建议

我不会过分强调guid超过30个字符。一种合理的方法可能是使用类似MD5的内容对GUID进行散列,然后删除最后2个字符。你发生碰撞的机会实际上是零。(1630是一个非常大的数字)。

我不会过分强调guid超过30个字符。一种合理的方法可能是使用类似MD5的内容对GUID进行散列,然后删除最后2个字符。你发生碰撞的机会实际上是零。(1630是一个非常大的数字)。

这些链接显示guid实际上只有16个字符长。它是更长的ASCII等价物。因此,只要您在显示之前来回转换(或者如果您根本不打算显示它们),GUID就会很好地位于用户名字段中。

这些链接表明GUID实际上只有16个字符长。它是更长的ASCII等价物。因此,只要你在显示之前来回转换(或者如果你根本不打算显示它们),GUID就很适合用户名字段。

当用户想要更改他们的电子邮件地址时会发生什么?你的实际目的是什么,只是使用户名字段唯一,而不实际用于任何事情?@Glen,大概只需要在users表中进行更改,这样用户就可以使用他们的电子邮件地址登录。有什么问题吗?Glen,那么登录也会改变我猜Ben James,没错,只有唯一用户名当用户想要更改他们的电子邮件地址时会发生什么?你的实际目的是什么,只是使用户名字段唯一,而不实际使用它做任何事情?@Glen,大概只需要在users表中更改它,因此,用户然后使用他们的电子邮件地址登录。有什么问题吗?Glen,那么登录也会改变我猜Ben James,没错,就是唯一的用户名