Python 制作Django';s auth跟踪电子邮件,如何将用户名字段与电子邮件关联?
我最初的想法是在创建帐户时简单地将电子邮件地址放入用户名和电子邮件字段中,但这不起作用,因为Django将用户名字段限制为30个字符,这对于电子邮件地址可能不够 我的第二个想法是md5电子邮件地址,将散列放入用户名,这将使其始终是唯一的(从技术上讲,也与电子邮件字段相同)。md5是32个字符,同样,我只有30个字符可以使用 我的第三个想法是将md5哈希末尾的最后两个字符切掉,使其为30个字符,然后按照我计划将其与完整哈希一起使用。但我不知道有多大的可能会出现两个散列,在第30个字符之前是相同的,但在第31和32个字符之间是不同的,我已经把它们切掉了Python 制作Django';s auth跟踪电子邮件,如何将用户名字段与电子邮件关联?,python,database,django,authentication,Python,Database,Django,Authentication,我最初的想法是在创建帐户时简单地将电子邮件地址放入用户名和电子邮件字段中,但这不起作用,因为Django将用户名字段限制为30个字符,这对于电子邮件地址可能不够 我的第二个想法是md5电子邮件地址,将散列放入用户名,这将使其始终是唯一的(从技术上讲,也与电子邮件字段相同)。md5是32个字符,同样,我只有30个字符可以使用 我的第三个想法是将md5哈希末尾的最后两个字符切掉,使其为30个字符,然后按照我计划将其与完整哈希一起使用。但我不知道有多大的可能会出现两个散列,在第30个字符之前是相同的,
是否有更好的方法将用户名字段的内容与电子邮件地址联系起来,使其始终唯一?我们开发了一个django应用程序,它将电子邮件存储为用户名。Django内置用户名模型限制为30个字符,适用于90% 为了支持更长的用户名,在不改变django源代码的情况下,我们使用了一个称为longer_username的附加应用程序:
来自django.db.models.signals导入类\u
def用户名(发件人,*args,**kwargs):
#您不能只执行`if sender==django.contrib.auth.models.User`
#因为您必须导入模型
#您必须使用_名称和_模块进行测试__
如果发送方.\uuuu名称.\uuuu==“用户”和发送方.\uuuu模块.\uuu==\
“django.contrib.auth.models”:
发件人。_meta.get_字段(“用户名”)。最大长度=75
类\u已准备好。连接(更长的\u用户名)
我们将此作为第一个应用程序添加到已安装的应用程序中:
INSTALLED_APPS = (
'longer_username',
...
)
就这样。更多信息可在此处找到: